Lodash는 JavaScript 유틸리티 라이브러리로, 다양한 유틸리티 함수를 제공하여 개발자들이 더 효율적으로 코드를 작성할 수 있도록 도와줍니다. 이번에는 Lodash의 디렉터리 관리 함수들과 그 사용 예제에 대해 알아보겠습니다.
1. Lodash의 디렉터리 관리 함수
Lodash는 디렉터리 관리에 유용한 다양한 함수들을 제공합니다. 이 중에서 몇 가지 주요 함수들을 살펴보겠습니다.
1.1. _.differenceBy()
이 함수는 첫 번째 배열에서 두 번째 배열에 존재하지 않는 요소들을 반환합니다. 이때 배열 요소들이 객체로 구성된 경우, 특정 속성을 기준으로 차이를 계산할 수 있습니다.
사용 예제:
const array1 = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }];
const array2 = [{ 'x': 1 }];
_.differenceBy(array1, array2, 'x');
// 결과: [{ 'x': 2 }, { 'x': 3 }]
1.2. _.partition()
이 함수는 주어진 배열을 조건에 따라 두 개의 배열로 분할합니다. 조건을 만족하는 요소들은 첫 번째 배열에, 그렇지 않은 요소들은 두 번째 배열에 저장됩니다.
사용 예제:
const numbers = [1, 2, 3, 4, 5, 6];
const [even, odd] = _.partition(numbers, (num) => num % 2 === 0);
console.log(even);
// 결과: [2, 4, 6]
console.log(odd);
// 결과: [1, 3, 5]
2. Lodash 디렉터리 관리 함수 사용 예제
이제 Lodash의 디렉터리 관리 함수들을 사용하는 실제 예제를 알아보겠습니다.
2.1. 디렉터리 내 중복 파일 찾기
디렉터리 내에 중복된 파일을 찾아내는 함수를 작성해보겠습니다.
const fs = require('fs');
const _ = require('lodash');
function findDuplicateFiles(directory) {
const files = fs.readdirSync(directory);
const fileNameGroups = _.groupBy(files, (file) => fs.lstatSync(`${directory}/${file}`).size);
const duplicateFiles = _.filter(fileNameGroups, (group) => group.length > 1);
return _.flattenDeep(duplicateFiles);
}
const duplicateFiles = findDuplicateFiles('/path/to/directory');
console.log(duplicateFiles);
위 예제에서는 fs
모듈을 사용하여 디렉터리 내의 파일을 읽어오고, _.groupBy()
함수를 사용하여 파일 크기를 기준으로 파일들을 그룹화했습니다. 그 후, _.filter()
함수를 사용하여 그룹 중에서 길이가 1 이상인 그룹을 필터링하여 중복 파일을 찾았습니다.
2.2. 파일 확장자별로 디렉터리에 정리하기
특정 디렉터리 내에 있는 파일들을 확장자별로 디렉터리에 정리하는 함수를 작성해보겠습니다.
const fs = require('fs');
const path = require('path');
const _ = require('lodash');
function organizeFilesByExtension(directory) {
const files = fs.readdirSync(directory);
_.forEach(files, (file) => {
const extension = path.extname(file);
const targetDir = `${directory}/${extension}`;
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir);
}
fs.renameSync(`${directory}/${file}`, `${targetDir}/${file}`);
});
}
organizeFilesByExtension('/path/to/directory');
위 예제에서는 fs
모듈과 path
모듈을 사용하여 파일 경로를 다루고, _.forEach()
함수를 사용하여 디렉터리 내의 파일들을 반복하면서 확장자를 가져오고, 해당 확장자를 이름으로 하는 디렉터리를 생성한 후 파일을 해당 디렉터리로 이동시켰습니다.
3. 참고자료
이제 Lodash의 디렉터리 관리 함수들과 사용 예제에 대해 알아보았습니다. Lodash를 사용하여 디렉터리와 파일을 효율적으로 관리할 수 있으니, 프로젝트에서 활용해보시기 바랍니다.