GNU/Linux >> Belajar Linux >  >> Linux

Menghapus Miliaran File Dari Direktori Sambil Melihat Kemajuannya Juga?

Saya memiliki direktori 30 TB yang memiliki miliaran file di dalamnya yang secara formal semua file JPEG. Saya menghapus setiap folder file seperti ini:

sudo rm -rf bolands-mills-mhcptz

Perintah ini hanya berjalan dan tidak menunjukkan apa-apa apakah itu berfungsi atau tidak.

Saya ingin melihat apakah itu menghapus file atau bagaimana status perintah saat ini.

Jawaban yang Diterima:

Anda dapat menggunakan rm -v untuk memiliki rm cetak satu baris per file yang dihapus. Dengan cara ini Anda dapat melihat rm memang berfungsi untuk menghapus file. Tetapi jika Anda memiliki miliaran file maka yang akan Anda lihat hanyalah rm masih bekerja. Anda tidak akan tahu berapa banyak file yang sudah dihapus dan berapa banyak yang tersisa.

Alat pv dapat membantu Anda dengan perkiraan kemajuan.

http://www.ivarch.com/programs/pv.shtml

Inilah cara Anda memanggil rm dengan pv dengan contoh keluaran

$ rm -rv dirname | pv -l -s 1000 > logfile
562  0:00:07 [79,8 /s] [====================>                 ] 56% ETA 0:00:05

Dalam contoh yang dibuat-buat ini saya memberi tahu pv bahwa ada 1000 file. Keluaran dari pv menunjukkan bahwa 562 sudah dihapus, waktu yang telah berlalu adalah 7 detik, dan perkiraan untuk selesai dalam 5 detik.

Beberapa penjelasan:

  • pv -l membuat pv untuk menghitung dengan baris baru, bukan byte
  • pv -s number memberitahu pv berapa totalnya sehingga dapat memberi Anda perkiraan.
  • Pengalihan ke logfile pada akhirnya adalah untuk output bersih. Jika tidak, baris status dari pv tercampur dengan output dari rm -v . Bonus:Anda akan memiliki file log dari apa yang telah dihapus. Tapi hati-hati file akan menjadi besar. Anda juga dapat mengarahkan ulang ke /dev/null jika Anda tidak membutuhkan log.

Untuk mendapatkan jumlah file Anda dapat menggunakan perintah ini:

$ find dirname | wc -l

Ini juga bisa memakan waktu lama jika ada miliaran file. Anda dapat menggunakan pv di sini juga untuk melihat berapa banyak yang telah dihitung

$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [     <=>                                              ]
278044

Di sini dikatakan bahwa butuh 4 detik untuk menghitung 278k file. Hitungan tepat di akhir (278044 ) adalah keluaran dari wc -l .

Jika Anda tidak ingin menunggu penghitungan, Anda dapat menebak jumlah file atau menggunakan pv tanpa perkiraan:

$ rm -rv dirname | pv -l > logfile

Seperti ini Anda tidak akan memiliki perkiraan untuk menyelesaikan tetapi setidaknya Anda akan melihat berapa banyak file yang sudah dihapus. Arahkan ulang ke /dev/null jika Anda tidak memerlukan file log.

Terkait:Bagaimana cara menambahkan data ke buffer dalam skrip shell?

Nitpick:

  • apakah Anda benar-benar membutuhkan sudo ?
  • biasanya rm -r cukup untuk menghapus secara rekursif. tidak perlu rm -f .

Linux
  1. Bagaimana cara menggunakan Wget untuk mengunduh file secara rekursif dari direktori web?

  2. Migrasi server Linux dari baris perintah

  3. Menghitung jumlah file dalam direktori menggunakan C

  1. Bagaimana cara menyalin 10 file terbaru teratas dari satu direktori ke direktori lain?

  2. Bagaimana cara mendaftar file yang baru dihapus dari direktori?

  3. Memastikan file baru dalam direktori milik grup

  1. Kelola direktori Linux /tmp seperti bos

  2. Bagaimana Cara Mendapatkan Hitungan File Dalam Direktori Menggunakan Baris Perintah?

  3. Bagaimana cara mendapatkan ukuran direktori sebenarnya (keluar dari du)?