私のディレクトリは多くのファイルでいっぱいです。どんな種類なのか、なぜそんなに多くなのか気になります。
いくつかのコマンドを試してみると、次のことが起こります。
ls -l | wc -l
1514340
ls | head -n 4
2004112700001.htm
2004112700002.htm
2004112700003.htm
2004112700004.htm
ls *.xml | head -n 4
20041127.xml
20041225.xml
20050101.xml
20050108.xml
ls -l *.htm | wc -l
bash: /bin/ls: Liste d'arguments trop longue
0
# Any other kind of ls command with *.htm, *.* is failing too.
分析を開始するには、wc -l
出力が完全に完了するのを待つ必要があることを知っています。ls -l *.htm
出力が大きすぎて失敗しました。
本当ですか?
この場合、ls
コマンドを一緒に操作する良い方法は何ですかwc -l
?wc
出力が完全に完了する前にコマンドが非同期的に開始されるように要求する方法はありますか?
答え1
rm *を使用してディレクトリ内の何百万ものファイルを削除しようとすると、同じ問題が発生します。私はシステムが見つけたすべてのファイル名でコマンドを「拡張」していると思いますが、それは余裕がありません。
代わりに「検索」を使用することをお勧めします。
find . -mindepth 1 -maxdepth 1 -name "*.html" | wc -l