[javascript] node.js를 사용하여 파일 이름 바꾸기

나는 JS를 사용하는 데 꽤 익숙하므로 최대한 구체적으로 노력할 것입니다. 🙂

  • 나는 다른 국가 이름 가진 260 .PNG 파일과 폴더를 가지고 : Afghanistan.png, Albania.png, Algeria.png, 등

  • 다음과 같이 각 국가의 모든 ISO 코드가 포함 된 코드가 포함 된 .json 파일이 있습니다.

{
  "AF": "아프가니스탄",
  "AL": "알바니아",
  "DZ": "알제리",
  ...
}
  • .png 파일의 이름을 소문자로 된 ISO 이름으로 바꾸고 싶습니다. 즉 , 모든 .png이미지가 포함 된
    폴더 에 ,, 등을 입력하고 싶습니다 .af.pngal.pngdz.png

나는 node.js로 이것을 수행하는 방법을 스스로 연구하려고 노력했지만 여기서 조금 길을 잃었고 몇 가지 단서를 많이 고맙게 생각합니다.

미리 감사드립니다!



답변

이를 위해서는 http://nodejs.org/api/fs.html 을 사용해야 fs합니다.

특히 fs.rename()기능 :

var fs = require('fs');
fs.rename('/path/to/Afghanistan.png', '/path/to/AF.png', function(err) {
    if ( err ) console.log('ERROR: ' + err);
});

새로 읽은 JSON 객체의 키와 값에 대한 루프에 넣으면 일괄 이름 바꾸기 스크립트가 있습니다.

fs.readFile('/path/to/countries.json', function(error, data) {
    if (error) {
        console.log(error);
        return;
    }

    var obj = JSON.parse(data);
    for(var p in obj) {
        fs.rename('/path/to/' + obj[p] + '.png', '/path/to/' + p + '.png', function(err) {
            if ( err ) console.log('ERROR: ' + err);
        });
    }
});

(여기서는 .json파일이 신뢰할 수 있고 파일 이름에 직접 키와 값을 사용하는 것이 안전 하다고 가정합니다 . 그렇지 않은 경우 해당 파일을 제대로 이스케이프해야합니다!)


답변

  1. fs.readdir (경로, 콜백)
  2. fs.rename (이전, 신규, 콜백)

통과 http://nodejs.org/api/fs.html

한 가지 중요한 것은 동기화 기능도 사용할 수 있다는 것입니다. (C 프로그램처럼 작동합니다)


답변

동기 이름 변경의 경우 fs.renameSync를 사용 하십시오.

fs.renameSync('/path/to/Afghanistan.png', '/path/to/AF.png');


답변

Linux / unix OS의 경우 셸 구문을 사용할 수 있습니다.

const shell = require('child_process').execSync ;

const currentPath= `/path/to/name.png`;
const newPath= `/path/to/another_name.png`;

shell(`mv ${currentPath} ${newPath}`);

그게 다야!


답변