recursive-readdir
のリポジトリはこちら:https://www.npmjs.com/package/recursive-readdir
パッケージをインストール
npm install recursive-readdir
使い方:
const recursive = require('recursive-readdir');
recursive(process.cwd(), [], (err, files) => {
if (err) return console.error(err);
console.log(files);
});
活用例
フォルダ内の画像ファイルを_thumb
という接尾詞追加する:
この例では
async
を使ってるので、npm install async
でインストールしてください
const async = require('async');
const path = require('path');
const fs = require('fs');
const recursive = require('recursive-readdir');
const image_ext = ['.jpg', '.png', '.jpeg', '.gif']; // 画像拡張子
recursive(process.cwd(), [], (err, files) => {
if (err) return console.error(err);
// 画像だけ抽出
const images = files.filter(v => {
const ext = path.extname(v); // 拡張子取得
return image_ext.indexOf(ext) > 0;
});
// 非同期でファイルリネームする
async.series(images.map(img => {
const ext = path.extname(img);
const basename = path.basename(img, ext);
const dirname = path.dirname(img);
const to_name = path.join(dirname, basename + '_thumb' + ext);
return (done) => fs.rename(img, to_name, done);
}), (err) => {
if (err) return console.error(err);
console.log('done');
});
});
recursive-readdir
のコールバックはファイルの絶対パスとなる。一方、node.js
のAPI fs.readdir
は相対パスとなるので、要注意。