Development Tip

Node.js에서 디렉토리를 제거하지 않고 디렉토리에서 모든 파일을 제거하는 방법

yourdevel 2021. 1. 5. 19:43
반응형

Node.js에서 디렉토리를 제거하지 않고 디렉토리에서 모든 파일을 제거하는 방법


Node.js를 사용하여 디렉토리 자체를 제거하지 않고 디렉토리에서 모든 파일을 제거하는 방법은 무엇입니까?
임시 파일을 제거하고 싶습니다. 나는 아직 파일 시스템에 좋지 않습니다.

내가 발견 한 파일과 디렉토리를 제거 할 방법을. 그 점에서 같은 /path/to/directory/*것은 작동하지 않습니다.

어떤 명령을 사용해야하는지 잘 모르겠습니다. 도와 주셔서 감사합니다.


디렉토리에서 모든 파일을 제거하려면 먼저를 사용하여 디렉토리의 모든 파일을 나열한 다음를 사용하여 각 파일을 제거 fs.readdir할 수 있습니다 fs.unlink. 또한 fs.readdir파일 이름 만 제공하므로 전체 경로를 얻으려면 디렉토리 이름과 연결해야합니다.

다음은 예입니다.

const fs = require('fs');
const path = require('path');

const directory = 'test';

fs.readdir(directory, (err, files) => {
  if (err) throw err;

  for (const file of files) {
    fs.unlink(path.join(directory, file), err => {
      if (err) throw err;
    });
  }
});

매우 편리한 rimraf라는 패키지가 있습니다. 노드에 대한 UNIX 명령 rm -rf입니다.

그럼에도 불구하고 폴더를 매우 쉽게 사용하여 삭제할 수 있기 때문에 너무 강력 할 수 있습니다. 다음 명령은 폴더 내의 파일을 삭제합니다. *를 제거하면 로그 폴더가 제거됩니다.

const rimraf = require('rimraf');
rimraf('./log/*', function () { console.log('done'); });

https://www.npmjs.com/package/rimraf


예, fs-extra 모듈이 있습니다. .emptyDir()이 모듈 내부에는 작업을 수행 하는 메서드가 있습니다 . 다음은 그 예입니다.

const fsExtra = require('fs-extra')

fsExtra.emptyDirSync(fileDir)

이 모듈의 비동기 버전도 있습니다. 누구나 링크를 확인할 수 있습니다.


@Waterscroll의 응답을 바탕으로 비동기를 사용하고 노드 8 이상에서 대기하려면 다음을 수행하십시오.

const fs = require('fs');
const util = require('util');
const readdir = util.promisify(fs.readdir);
const unlink = util.promisify(fs.unlink);
const directory = 'test';

async function toRun() {
  try {
    const files = await readdir(directory);
    const unlinkPromises = files.map(filename => unlink(`${directory}/${filename}`));
    return Promise.all(unlinkPromises);
  } catch(err) {
    console.log(err);
  }
}

toRun();

참조 URL : https://stackoverflow.com/questions/27072866/how-to-remove-all-files-from-directory-without-removing-directory-in-node-js

반응형