GNU/Linux >> Linux の 問題 >  >> Linux

大量のファイルをすばやく削除する方法

find … -exec rm {} \; rm を実行します 各ファイルのコマンド。新しいプロセスを開始するのは非常に高速ですが、ファイルを削除するだけの場合よりもはるかに時間がかかります.

find … -exec rm {} + rm を呼び出します バッチで、これははるかに高速です:rm を実行するコストを支払います バッチごとに 1 回、各バッチで多数の削除が実行されます。

rm を呼び出さない方が早い まったく。 find Linux のコマンドにはアクション -delete があります 一致するファイルを削除します。

find ./cache -type f -mtime +0.5 -delete

ただし、find … -exec rm {} \; のような速度でファイルを生成している場合 ついていけません。おそらく設定に問題があります。 cache の場合 数百万のファイルが含まれているため、アクセスを高速化するためにサブディレクトリに分割する必要があります。


xargs を使ってみてください :

find ./cache -mtime +0.5 -print0 | xargs -0 rm -f

@pradeepchhetri の説明を更新

find を使用する場合 -exec で 、 find であるすべてのファイル found は rm を呼び出します 一度。したがって、大量のファイル、つまり 10000 ファイルを見つけた場合は、rm を呼び出します。 10000回。

xargs find の出力を扱います rm へのコマンド引数として 、そのため、xargs は rm と同じ数の引数を提供します 一度に処理できます。つまり、rm -f file1 file2 ... そのため、フォーク呼び出しが少なくなり、プログラムの実行が速くなります。


Linux
  1. コンソールで大きなファイルをチェックする方法

  2. N重複ファイルをハードリンクに置き換える簡単な方法は?

  3. Linux で空のディレクトリとファイルを見つけて削除する方法

  1. すべてのサブディレクトリで一致するファイルを削除します

  2. 見つかったファイルの総行数を数えるには?

  3. 1 つのディレクトリにある多数のファイルを移動する最も効率的な方法は何ですか?

  1. ディレクトリとサブディレクトリ内のファイル数を見つける方法

  2. Unix で空のディレクトリとファイルを見つけて削除する方法

  3. 各ディレクトリ内のファイル数を数える方法は?