exec rm の回答に似ていますが、見つかったファイルごとにプロセスは必要ありません:
find . -size +100k -delete
ワンライナー:
find . -size +100k -exec rm {} \;
最初の部分 (find . -size +100k
) は、現在のディレクトリ (.
) から始まるすべてのファイルを探します ) 超過 (+
) 100 キロバイト (100k
).
2 番目の部分 (-exec rm {} \;
) 見つかったすべてのファイルに対して指定されたコマンドを呼び出します。 {}
パスを含む現在のファイル名のプレースホルダーです。 \;
コマンドの終わりをマークするだけです。
生の find
を実行して、フィルタリング基準が適切かどうかを常に確認することを忘れないでください :
find . -size +100k
または、削除する前にバックアップ コピーを作成することもできます:
find . -size +100k -exec cp --parents {} ~/backup \;
python はすべての unix ベースの OS にインストールされているので、bash の代わりに使用してみませんか?
awk
よりも python の方が読みやすいといつも思っています。 と sed
魔法。
これは、私が書いたであろう python コードです:
import os
Kb = 1024 # Kilo byte is 1024 bytes
Mb = Kb*Kb
Gb = Kb*Kb*Kb
for f in os.listdir("."):
if os.stat(f).st_size>100*Kb:
os.remove(f)
これは python -c
のワンライナー バージョンです。
python -c "import os; [os.remove(f) for f in os.listdir('.') if os.stat(f).st_size>100*1024]"
検索を再帰的に適用したい場合は、これを参照してください