È possibile determinare l'avanzamento di un comando rm?


18

L'uso rm -rf LargeDirectoryper eliminare una directory di grandi dimensioni può richiedere molto tempo per il completamento, a seconda delle dimensioni della directory.

È possibile ottenere un aggiornamento dello stato o in qualche modo monitorare l'avanzamento di questa eliminazione per fornire una stima approssimativa di dove nel processo si trova il comando?


4
Prova watch -n 5 du -s LargeDirectory. Guarda come va a zero.
Mark Plotnick,

@MarkPlotnick: su MacOS, devi installarlo brew install watcho consulta le istruzioni qui .
smci

Risposte:


19

a partire dal

man rm 

usa l'opzione -v:

-v, --verbose
explain what is being done

4
non è un progresso però. in che modo "ora l'eliminazione di foo / bar" ti aiuta a determinare quanto è completa la cosa?
volo di pecore

@flyingsheep ritiene che rimuova tutto in ordine alfabetico, almeno in OSX, quindi aiuta in qualche modo ..
Tim Baas,

7

Vedo che la domanda è vecchia. Voglio condividere ciò che funziona per me forse aiutare qualcun altro.

Ottengo la barra di avanzamento usando la pvriga di comando Pipe Viewer

Questo è il comando

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

Se hai bisogno delle autorizzazioni di root per la directory o il file da eliminare,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -rper rimuovere ricorsivamente DIR e file. -vin dettaglio elenca tutti i file e le directory che viene rimosso.

  • pv -l -s: -lper contare le righe anziché i byte. -simposta le linee totali da rimuovere.

  • $( du -a <dir_or_file> | wc -l ): du -arestituisce un elenco di tutti i file e le directory dalla directory specificata. wc -lrestituisce il conteggio delle righe prodotte da du -a.

  • > /dev/null: invia l'output del rm -rvnulla.


Buona idea. Ciò può dare un conteggio file / directory errato se qualche nome contiene righe; find {dir} -printf . | wc -csarebbe più sicuro (ma -printfè un'estensione GNU).
Scott,

Questo è quello che stavo cercando, grazie. Altri commenti hanno lasciato qualcosa che mancava.
Hellreaver,

3

Puoi visualizzare lo stato di avanzamento di qualsiasi comando attualmente in esecuzione con Coreutils Progress Viewer ( cv). Non è come emettere un singolo comando, ma puoi vedere i progressi con esso.

esempio di CV utilizzato

Sono sicuro che qualcuno può inventare un alias per eseguire questo con il comando. Funziona anche con cp, mv, dd, tar, gzip/gunzip, cat, etc.. Maggiori dettagli al riguardo sono disponibili all'indirizzo

gitthub Xfennec / progress


2
Poiché progress (come "cv" è ora noto) tiene traccia dei file aperti e rm non apre i file che elimina, ciò potrebbe in realtà non essere molto utile.
dhag,

2
@dhag Il tuo diritto, ho pensato che avrebbe funzionato per RM. Ora sto discutendo se rimuovere la risposta. hmm
Ashitakalax,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.