回答:
これは次の方法で実行できますfind
。
find . -type f -size -1M -exec rm {} +
これはサブディレクトリに再帰的に降りて、1メガバイトより小さいすべてのファイルを無条件に削除することに注意してください。注意してください。
find
です。:)
find
呼び出されたプロセスへの引数の数を、システムの制限に収まるように制限しrm *
ます。これは、単一のプロセス呼び出しであることが保証されています。 必要に応じてfind
、複数のインスタンスを呼び出しますrm
。そして、改行文字を含む特殊文字は正しく処理されると確信しています。私が好むなかっ-exec rm
超える-delete
例として、後者の申し出消去、書き込み保護されたファイルへの道を-柔軟性の理由から。
-1M
必要に応じて1メガバイト未満を意味します。ご使用のバージョンでは、サイズがちょうど1メガバイトのすべてのファイルが削除されますが、これはやや無意味な操作のようです。
find . -type f -size +1M -exec rm {} +
。-1Mではなく+ 1Mに注意してください。
このリンクhttp://ayaz.wordpress.com/2008/02/05/bash-quickly-deleting-empty-files-in-a-directory/をチェックアウトすると、まさにあなたが望むものを持っています。
for file in *;
do
file_size=$(du $file | awk '{print $1}');
if [ $file_size == 0 ]; then
echo "Deleting empty file $file with file size $file_size!";
echo "rm -f $file";
fi;
done
forループを使用してすべてのファイルを反復処理し、上記の例のようにduとawkを使用してファイルサイズを見つけることができます。
1M
。