GNU/Linux >> Belajar Linux >  >> Linux

Cara lebih cepat untuk menghapus sejumlah besar file

find … -exec rm {} \; mengeksekusi rm perintah untuk setiap file. Meskipun memulai proses baru cukup cepat, ini masih jauh lebih lambat daripada sekadar menghapus file.

find … -exec rm {} + akan memanggil rm dalam batch, yang jauh lebih cepat:Anda membayar biaya menjalankan rm sekali per batch, dan setiap batch melakukan banyak penghapusan.

Yang lebih cepat adalah tidak memanggil rm sama sekali. find perintah di Linux memiliki aksi -delete untuk menghapus file yang cocok.

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

Namun, jika Anda membuat file dengan kecepatan find … -exec rm {} \; tidak dapat mengikuti, mungkin ada yang salah dengan penyiapan Anda. Jika cache berisi jutaan file, Anda harus membaginya menjadi subdirektori untuk akses yang lebih cepat.


Coba gunakan xargs :

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

Perbarui penjelasan untuk @pradeepchhetri

Jika Anda menggunakan find dengan -exec , setiap file yang find ditemukan akan memanggil rm satu kali. Jadi jika Anda menemukan banyak file, yaitu 10.000 file, Anda memanggil rm 10.000 kali.

xargs akan memperlakukan ouput dari find sebagai argumen perintah ke rm , sehingga xargs akan memberikan argumen sebanyak rm dapat menangani sekaligus, yaitu rm -f file1 file2 ... Jadi itu mengurangi fork call, membuat program berjalan lebih cepat.


Linux
  1. Cara Menemukan dan Menghapus Direktori dan File Kosong di Unix

  2. Bagaimana cara menghitung jumlah baris file yang ditemukan?

  3. Temukan direktori yang berisi sejumlah file

  1. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  2. Cara memeriksa file besar di konsol

  3. Apa cara paling efisien untuk memindahkan sejumlah besar file yang berada dalam satu direktori?

  1. Apa Cara Terbaik Untuk Menghitung Jumlah File Dalam Direktori?

  2. N Cara Mudah Mengganti File Duplikat Dengan Hardlink?

  3. Memformat Ulang Sejumlah Besar File Xml?