100未満(または200ファイル)未満のファイルを含むサブディレクトリを見つけて削除するにはどうすればよいですか?
次のコマンドを見つけて使用しましたが、リストされているサブディレクトリを削除する方法がわかりません。 (これらのフォルダとサブディレクトリは1000以上ありますが、手動ではできません。)
find . -maxdepth 5 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; | awk '$NF<=10'
ありがとうございます!
ベストアンサー1
以下であなたの質問に答えましたが、このコマンドを使用するときは非常に注意する必要があることを強調したいと思います。生ファイルの出力awk
がにパイプされますrm -rf
。これは、コマンドがリストされているすべてのフォルダを強制的に削除することを意味します。
ほとんどの場所でこのプログラムを実行すると、重大な問題が発生したり、システムに不可逆的な破損を引き起こす可能性があるため、このプログラムを実行する場所に注意する必要があります。
find . -maxdepth 5 -type d -exec bash -c "echo -ne '{} '; ls '{}' | wc -l" \; -print0 | awk '$NF<=10' | xargs rm -rf
元のコマンドの出力はにパイプされ、元の出力xarge rm -rf
をxargs
他のプログラム(この場合)の引数に変換しますrm
。
rm
使用している2つのスイッチのマンページから取得しました。
-f, --force
ignore nonexistent files, never prompt
-r, -R, --recursive
remove directories and their contents recursively
直接パイピングは、rm
その形式のファイルまたはフォルダ名を受け取るとは思わないため、機能しません。