何千ものファイルを含む大規模ディレクトリを効率的に削除します。

何千ものファイルを含む大規模ディレクトリを効率的に削除します。

数十万の小さなファイルがフォルダを扱うのが難しくなる問題が発生しました。

実行時にエラーを返すファイルがたくさんありrm -rf、私たちがしなければならないことは次のとおりです。

find /path/to/folder -name "filenamestart*" -type f -exec rm -f {} \;

この方法は動作しますが、非常に遅く、メモリ不足のために失敗することがよくあります。

もっと良い方法がありますか?理想的には、内容を気にせずにディレクトリ全体を削除したいと思います。

ベストアンサー1

rsyncの使用は驚くほど速くて簡単です。

mkdir empty_dir
rsync -a --delete empty_dir/    yourdirectory/

@sarathの返信別のクイックオプションが言及されました:Perl!ベンチマークはrsync -a --delete

cd yourdirectory
perl -e 'for(<*>){((stat)[9]<(unlink))}'

またはなしstat(必要かどうかは議論の余地があります。一部の人々はそれがあればより速くなると言い、他の人はそれがなければより速いと言います):

cd yourdirectory
perl -e 'for(<*>){unlink}'

源泉:

  1. https://stackoverflow.com/questions/1795370/unix-fast-remove-directory-for-cleaning-up-daily-builds
  2. http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux
  3. https://www.quora.com/Linux-why-stat+unlink-can-be-faster-than-a-single-unlink/answer/Kent-Fredric?srid=O9EW&share=1

おすすめ記事