node의 fs 모듈을 공부하던 중 파일을 확장자별로 정리하는 스크립트를 작성해보았다.
fs는 FileSystem의 약자로, fs 모듈은 Node.js에서 파일 입출력 처리를 할 때 사용한다.
const fs = require('fs').promises;
const path = require('path');
// 디렉토리의 모든 파일을 읽는 메서드 readdir
fs.readdir(__dirname)
.then((files) => {
// 각각의 파일명에 대하여 반복
files.forEach((file) => {
// 파일명을 확장자명과 분리한다.
file = file.split('.');
// 폴더의 경우 file.length 가 1이다
if(file.length>1){
// js 파일인 경우는 건너뛴다
if(file[1]==='js'){
}else{
// 확장자명을 폴더명으로 정하기 위한 변수 선언
const dName = file[1];
// 폴더가 없다면 폴더를 생성한다.
const dirPath = path.join(__dirname,file[1]);
fs.lstat(dirPath)
.catch((error)=>{
fs.mkdir(dName).catch((error)=>{return});
})
.finally(()=>{
// 폴더생성이 끝나면
//파일명과 확장자명을 다시 합친다.
file = file.join('.');
// 이동시키기 위한 경로 + 파일명 변수를 만든다.
const destination = path.join(__dirname,dName,file);
// 이동시키기를 원하는 파일의 경로 변수를 만든다.
const target = path.join(__dirname,file);
// 이동시킬 파일과 이동될 위치를 설정하여 파일을 이동시킨다.
fs.rename(target,destination)
.then(()=>{
console.log(`${target} 가 ${destination}으로 이동!`);
})
.catch(console.error);
})
}
}
})
})
.catch(console.error)
.finally(()=>{
// 모든 작업이 끝나면 해당 디렉토리에서 폴더 생성과 파일 이동 완료 콘솔을 출력한다.
console.log(path.basename(__dirname) + '에서 폴더 생성과 파일 이동이 완료되었습니다.');
});