Czy można określić postęp polecenia rm?

18

Użycie rm -rf LargeDirectorydo usunięcia dużego katalogu może zająć dużo czasu, w zależności od rozmiaru katalogu.

Czy można uzyskać aktualizację statusu lub w jakiś sposób monitorować postęp usuwania, aby uzyskać przybliżoną ocenę tego, gdzie w trakcie procesu znajduje się polecenie?

Jan
źródło
4
Spróbować watch -n 5 du -s LargeDirectory. Zobacz, jak dochodzi do zera.
Mark Plotnick,
@MarkPlotnick: na MacOS, musisz go zainstalować za pomocą brew install watchlub zobacz tutaj, aby uzyskać instrukcje.
smci

Odpowiedzi:

19

od

man rm 

użyj opcji -v:

-v, --verbose
explain what is being done
simozz
źródło
4
to jednak nie postęp. w jaki sposób „teraz usuwając foo / bar” pomaga ustalić, jak daleko jest cała rzecz?
latające owce
@flyingsheep wierzy, że usuwa wszystko w kolejności alfabetycznej, przynajmniej w OSX robi to, więc w jakiś sposób pomaga ..
Tim Baas
7

Widzę, że pytanie jest stare. Chcę podzielić się tym, co dla mnie działa, może pomóc komuś innemu.

Wyświetlam pasek postępu za pomocą pvwiersza polecenia Pipe Viewer

To jest polecenie

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

Jeśli potrzebujesz uprawnień roota do usunięcia katalogu lub pliku,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -raby rekurencyjnie usuwać DIR i pliki. -vverbose wyświetla wszystkie usuwane pliki i katalogi.

  • pv -l -s: -lzliczać wiersze zamiast bajtów. -sustaw całkowitą liczbę linii do usunięcia.

  • $( du -a <dir_or_file> | wc -l ): du -azwraca listę wszystkich plików i katalogów z określonego katalogu. wc -lzwraca liczbę wierszy wyprowadzonych przez du -a.

  • > /dev/null: wyślij wyjście rm -rvdo nikąd.

Ezequiel
źródło
Dobry pomysł. Może to dać niepoprawną liczbę plików / katalogów, jeśli jakiekolwiek nazwy zawierają znaki nowej linii; find {dir} -printf . | wc -cbyłoby bezpieczniejsze (ale -printfjest rozszerzeniem GNU).
Scott,
Właśnie tego szukałem, dziękuję. Inne komentarze pozostawiły coś brakującego.
Hellreaver,
3

Możesz przeglądać postępy wszystkich aktualnie uruchomionych poleceń za pomocą Coreutils Progress Viewer ( cv). To nie jest tak, jakby wydać jedno polecenie, ale widać postęp z nim.

przykład zastosowania CV

Jestem pewien, że ktoś może wymyślić alias do uruchomienia tego polecenia. Działa również z cp, mv, dd, tar, gzip/gunzip, cat, etc.. Więcej informacji na ten temat można znaleźć na stronie

gitthub Xfennec / progress

Ashitakalax
źródło
2
Ponieważ postęp (jak obecnie znane jest „cv”) śledzi otwarte pliki, a rm nie otwiera plików, które usuwa, może to nie być bardzo przydatne.
dhag
2
@hag Masz rację, myślałem, że to zadziała dla rm. Teraz zastanawiam się, czy usunąć odpowiedź. hmm
Ashitakalax,