Jika Anda mencoba menghapus sejumlah besar file sekaligus (saya menghapus direktori dengan 485.000+ hari ini), Anda mungkin akan mengalami kesalahan ini:
/bin/rm: Argument list too long.
Masalahnya adalah ketika Anda mengetik sesuatu seperti rm -rf *
, *
diganti dengan daftar setiap file yang cocok, seperti "rm -rf file1 file2 file3 file4" dan seterusnya. Ada buffer memori yang relatif kecil yang dialokasikan untuk menyimpan daftar argumen ini dan jika diisi, shell tidak akan menjalankan program.
Untuk mengatasi masalah ini, banyak orang akan menggunakan perintah find untuk menemukan setiap file dan meneruskannya satu per satu ke perintah "rm" seperti ini:
find . -type f -exec rm -v {} \;
Masalah saya adalah saya harus menghapus 500.000 file dan itu terlalu lama.
Saya menemukan cara yang jauh lebih cepat untuk menghapus file - perintah "find" memiliki bendera "-delete" yang ada di dalamnya! Inilah yang akhirnya saya gunakan:
find . -type f -delete
Dengan menggunakan metode ini, saya menghapus file dengan kecepatan sekitar 2000 file / detik - jauh lebih cepat!
Anda juga dapat menampilkan nama file saat Anda menghapusnya:
find . -type f -print -delete
... atau bahkan menunjukkan berapa banyak file yang akan dihapus, lalu berapa lama waktu yang dibutuhkan untuk menghapusnya:
root@devel# ls -1 | wc -l && time find . -type f -delete
100000
real 0m3.660s
user 0m0.036s
sys 0m0.552s