特定のディレクトリ内のファイルの中で、特定のパターンに一致するファイルのリストを見つける方法を紹介します。
1. glob() を使った方法
glob(path_pattern, callback)
は path_pattern
に対応するファイルを見つけて callback に結果を渡します。
globがインストールされていない場合は、以下のコマンドで追加できます。
$ npm install glob
globを使用すると、以下のようにパスの下にあるファイルの中にファイル名が.txtで終わるすべてのファイルを見つけることができます。
const glob = require('glob')
glob('/var/*.txt', (err, files) => {
if (err) {
return console.error(err);
}
files.forEach(file => {
console.log(file);
});
})
Output:
/var/test.txt
/var/test2.txt
実行環境で /var
パスの下のファイルを確認すると、以下のようなディレクトリとファイルがあります。
$ ls /var
lib local lock log mail metrics opt run snap spool test.txt test2.txt www
1.1 子のすべてのディレクトリとファイルの確認
特定のパスの下のディレクトリのサブディレクトリまで、そのディレクトリの下のすべてのファイルまで確認するには、 /var/**/*.log
のように/**/
パターンを追加するだけです。
const glob = require('glob');
glob('/var/**/*.log', (err, files) => {
if (err) {
return console.error(err);
}
files.forEach(file => {
console.log(file);
});
});
Output:
/var/lib/dkms/nvidia/470.141.03/5.11.0-46-generic/x86_64/log/make.log
/var/lib/docker/containers/ef1758c3f211f839e0ba83d31ea038edddd2c0782e978a76f9f83336660cf270/ef1758c3f211f839e0ba83d31ea038edddd2c0782e978a76f9f83336660cf270-json.log
/var/lib/gems/2.7.0/extensions/x86_64-linux/2.7.0/eventmachine-1.2.7/mkmf.log
/var/lib/gems/2.7.0/extensions/x86_64-linux/2.7.0/ffi-1.15.5/mkmf.log
/var/lib/gems/2.7.0/gems/ffi-1.15.5/ext/ffi_c/libffi-x86_64-linux-gnu/config.log
/var/log/alternatives.log
/var/log/apache2/access.log
/var/log/apache2/error.log
/var/log/apache2/other_vhosts_access.log
/var/log/apport.log
/var/log/apt/history.log
/var/log/apt/term.log
/var/log/auth.log
/var/log/boot.log
/var/log/bootstrap.log
/var/log/dist-upgrade/apt.log
/var/log/dpkg.log
/var/log/fontconfig.log
/var/log/gpu-manager-switch.log
2. fs.readdir() を使った方法
fs.readdir(path, callback)
で path のサブファイルのリストを取得できます。ファイルのリストを取得し、ファイル名を正規表現でフィルタリングして、特定のパターンのファイルを見つけることができます。
const fs = require('fs');
fs.readdir("/var", (err, files) => {
if (err) {
throw err;
}
files.filter(file => /.*\.txt/.test(file))
.forEach(file => {
console.log(file);
});
});
Output:
test.txt
test2.txt
Related Posts
- JavaScript - slice()で配列を切り取り、分割する
- Node.js - ファイルに特定の文字列が含まれていることを確認する
- Node.js - 特定のパターンに一致するすべてのファイルを見つける
- Node.js - ディレクトリのファイルリストを取得する
- Node.js - ファイル、ディレクトリ(サブファイル)の削除
- Node.js - ファイル名の変更
- JavaScript - switch条件文
- JavaScript - 配列内の特定の要素を探す、Indexを探す
- JavaScript - 特定の値で配列を塗りつぶす、Array.fill()
- JavaScript - null、undefinedチェック方法
- JavaScript - 配列をオブジェクトに変換す る4つの方法
- JavaScript - 今月(特定の月)の1日、最後の日
- JavaScript - 配列内の特定の要素を削除する方法
- JavaScript - 配列に特定の値が含まれていることを確認する
- JavaScript - Dateに時間(日/時/分/秒)を加える
- JavaScript - 変数が配列であることを確認する3つの方法
- JavaScript - 文字列が数値であることを確認する
- JavaScript - 変数が文字列であることを確認する
- JavaScript - Mapのkeyを配列に変換する
- JavaScript - Mapのvalueを配列に変換する
- JavaScript - Map要素を削除する方法