Apakah mungkin untuk menentukan progres perintah rm?

18

Menggunakan rm -rf LargeDirectoryuntuk menghapus direktori besar dapat membutuhkan banyak waktu untuk menyelesaikannya tergantung pada ukuran direktori.

Apakah mungkin untuk mendapatkan pembaruan status atau dengan cara lain memantau kemajuan penghapusan ini untuk memberikan perkiraan kasar mengenai di mana dalam prosesnya perintah itu?

John
sumber
4
Coba watch -n 5 du -s LargeDirectory. Perhatikan saat angka nol.
Mark Plotnick
@MarkPlotnick: pada MacOS, harus menginstalnya dengan brew install watch, atau lihat di sini untuk instruksi.
smci

Jawaban:

19

dari

man rm 

gunakan opsi -v:

-v, --verbose
explain what is being done
simozz
sumber
4
itu bukan kemajuan. bagaimana "sekarang menghapus foo / bar" membantu Anda menentukan seberapa jauh hal yang lengkap?
domba terbang
@flyingsheep percaya itu menghapus semuanya dalam urutan abjad, setidaknya dalam OSX itu, jadi itu membantu dalam beberapa cara ..
Tim Baas
7

Saya melihat pertanyaannya sudah tua. Saya ingin membagikan apa yang berhasil bagi saya untuk membantu orang lain.

Saya mendapatkan bilah kemajuan menggunakan penampil pipapv baris perintah

Ini perintahnya

rm -rv DIR_OR_FILE_NAME | pv -l -s $ (du -a DIR_OR_FILE_NAME | wc -l)> / dev / null

Jika Anda memerlukan izin root untuk dir atau file untuk dihapus,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -runtuk menghapus DIR dan file secara rekursif. -vverbose daftar semua file dan direktori yang menghapus.

  • pv -l -s: -luntuk menghitung baris, bukan byte. -satur garis total yang akan dihapus.

  • $( du -a <dir_or_file> | wc -l ): du -amengembalikan daftar semua file dan direktori dari direktori yang ditentukan. wc -lmengembalikan jumlah garis yang dihasilkan oleh du -a.

  • > /dev/null: kirim output rm -rvke mana-mana.

Ezequiel
sumber
Ide bagus. Ini dapat memberikan jumlah file / direktori yang salah jika ada nama yang mengandung baris baru; find {dir} -printf . | wc -cakan lebih aman (tetapi -printfmerupakan ekstensi GNU).
Scott
Ini sebenarnya yang saya cari, terima kasih. Komentar lain meninggalkan sesuatu yang kurang.
Hellreaver
3

Anda dapat melihat progres semua perintah yang sedang berjalan dengan Coreutils Progress Viewer ( cv). Ini tidak seperti mengeluarkan satu perintah, tetapi Anda dapat melihat progresnya.

contoh CV yang digunakan

Saya yakin seseorang dapat membuat alias untuk menjalankan ini dengan perintah. Ini juga berfungsi dengan baik cp, mv, dd, tar, gzip/gunzip, cat, etc.. Rincian lebih lanjut tentang ini dapat ditemukan di

gitthub Xfennec / progres

Ashitakalax
sumber
2
Karena kemajuan (seperti "cv" sekarang dikenal) melacak file yang terbuka dan rm tidak membuka file yang dihapus, ini mungkin sebenarnya tidak terlalu berguna.
Dhag
2
@hhag Hak Anda, saya pikir ini akan berhasil untuk rm. Sekarang saya sedang berdebat apakah akan menghapus jawabannya. hmm
Ashitakalax