現在のディレクトリとそのサブディレクトリから特定のサイズを超えるすべてのファイルを取得するLinuxコマンドを探しています。
これらすべてのファイルを削除する最も簡単な方法は何ですか?
Exec rm answerに似ていますが、見つかったファイルごとにプロセスは必要ありません。
find . -size +100k -delete
一発ギャグ:
find . -size +100k -exec rm {} \;
最初の部分 (find . -size +100k
)現在のディレクトリから始まるすべてのファイルを検索します(.
)(+
)100キロバイト(100k
)。
2番目の部分(-exec rm {} \;
)見つかったすべてのファイルで指定されたコマンドを呼び出しました。 {}
は、パスを含む現在のファイル名のプレースホルダーです。 \;
コマンドの終わりを示すだけです。
Raw find
を実行して、フィルタリング基準が適切かどうかを常に確認することを忘れないでください。
find . -size +100k
または、削除する前にバックアップコピーを作成することもできます。
find . -size +100k -exec cp --parents {} ~/backup \;
pythonはすべてのunixベースのOSにインストールされているので、bashの代わりに使用してみませんか?
私は常にpython awk
と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]"
そして、検索を再帰的に適用したい場合は、 this を参照してください