web-dev-qa-db-ja.com

特定のサイズを超えるすべてのファイルを取得して削除する方法

  1. 現在のディレクトリとそのサブディレクトリから特定のサイズを超えるすべてのファイルを取得するLinuxコマンドを探しています。

  2. これらすべてのファイルを削除する最も簡単な方法は何ですか?

24
Ran

Exec rm answerに似ていますが、見つかったファイルごとにプロセスは必要ありません。

find . -size +100k -delete
57
Erik

一発ギャグ:

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 \;
14

zsh

ls -l *(Lk+100)   # list file size greater than 100kb

そう:

rm *(Lk+100)

より多くのzshの良さ ここ

1
Brian Agnew

pythonはすべてのunixベースのOSにインストールされているので、bashの代わりに使用してみませんか?

私は常にpython awksedマジックより読みやすいです。

これは私が書いたであろう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 を参照してください

0
Uri Goren