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


90

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

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

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

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

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

미리 감사드립니다!

답변:


153

이를 위해서는 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파일이 신뢰할 수 있고 파일 이름에 직접 키와 값을 사용하는 것이 안전 하다고 가정합니다 . 그렇지 않은 경우 해당 파일을 제대로 이스케이프해야합니다!)


9
답변의 마지막 2 개 라인 : 매우 중요하다
PRANAV

.json : 가져 const obj = require('/path/to/countries.json');for(var p in obj) {...}
오기만

1
당신은 할 수 있지만 .. 사용 require 하면 해당 파일의 코드실행 됩니다. 누군가가 잠재적으로 응용 프로그램에 악성 코드를 주입 ​​할 수있는 방법을 소개하고 있습니다 (예 : .json 파일 수정). 읽고 사용 JSON.parse()하는 것은 그것을 모두 피합니다. 코드를 아주 약간 적게 작성하기 위해 보안을 손상시키지 마십시오.
VoteyDisciple

경로 문자열을 연결하는 대신 path.resolve 를 사용하는 것이 더 안전 합니다.
JulianSoto 2018 년

동기식 버전fs.renameSync(oldPath, newPath);
Tim

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

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

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



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.