web-dev-qa-db-ja.com

「引数リストが長すぎる」ときに3日以上経過したすべてのファイルを削除する方法

82000個のファイルとディレクトリが含まれるログファイルディレクトリ(約半分)があります。

3日以上経過したすべてのファイルとディレクトリを削除する必要があります。

37000個のファイルがあるディレクトリで、次の方法でこれを実行できました。

find * -mtime +3 -exec rm {} \;

しかし、82000のファイル/ディレクトリでは、エラーが発生します:

/ usr/bin/find:引数リストが長すぎます

日以上経過したすべてのファイル/ディレクトリを削除できるように、このエラーを回避するにはどうすればよいですか?

88
Edward Tanguay

すべてのファイルを削除するにはandcurrentディレクトリ内のディレクトリ:

find . -mtime +3 | xargs rm -Rf

または、OPの元のコマンドにもっと沿って:

find . -mtime +3 -exec rm -Rf -- {} \;
121
hd1

以下も使用できます:

find . -mindepth 1 -mtime +3 -delete

ターゲットディレクトリを削除しない

59
vangheem

元の質問の別の解決策、特に。フォルダー内の古いファイルの一部のみを削除する場合に便利です。次のようになります。

find . -name "*.sess" -mtime +100 

など..引用はシェルワイルドカードをブロックするため、何百万ものファイルを「見つける」ことができます。

15
62mkv