¿Es posible determinar el progreso de un comando rm?

18

El uso rm -rf LargeDirectorypara eliminar un directorio grande puede llevar una gran cantidad de tiempo en completarse dependiendo del tamaño del directorio.

¿Es posible obtener una actualización de estado o de alguna manera monitorear el progreso de esta eliminación para dar una estimación aproximada de en qué punto del proceso se encuentra el comando?

John
fuente
44
Tratar watch -n 5 du -s LargeDirectory. Mira como va a cero.
Mark Plotnick el
@ MarkPlotnick: en MacOS, tiene que instalarlo brew install watcho consulte aquí para obtener instrucciones.
smci

Respuestas:

19

desde

man rm 

use la opción -v:

-v, --verbose
explain what is being done
simozz
fuente
44
eso no es progreso sin embargo. ¿Cómo te ayuda "ahora eliminar foo / bar" a determinar qué tan lejos está la cosa completa?
ovejas voladoras
@flyingsheep cree que elimina todo en orden alfabético, al menos en OSX lo hace, por lo que ayuda de alguna manera ..
Tim Baas
7

Veo que la pregunta es vieja. Quiero compartir lo que funciona para mí tal vez ayudar a alguien más.

Obtengo la barra de progreso usando la pvlínea de comando Pipe Viewer

Este es el comando

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

Si necesita permisos de root para eliminar el directorio o el archivo,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -rpara eliminar de forma recursiva DIR y archivos. -vdetallado enumera todos los archivos y directorios que está eliminando.

  • pv -l -s: -lpara contar líneas en lugar de bytes. -sestablece las líneas totales que se eliminarán.

  • $( du -a <dir_or_file> | wc -l ): du -adevuelve una lista de todos los archivos y directorios del directorio especificado. wc -ldevuelve el recuento de líneas generadas por du -a.

  • > /dev/null: envía la salida de rm -rva ninguna parte.

Ezequiel
fuente
Buena idea. Esto puede dar un recuento incorrecto de archivos / directorios si alguno de los nombres contiene nuevas líneas; find {dir} -printf . | wc -csería más seguro (pero -printfes una extensión de GNU).
Scott
Esto es lo que estaba buscando, gracias. Otros comentarios dejaron algo deficiente.
Hellreaver
3

Puede ver el progreso de cualquier comando actualmente en ejecución con Coreutils Progress Viewer ( cv). No es como emitir un solo comando, pero puedes ver el progreso con él.

ejemplo de CV utilizado

Estoy seguro de que alguien puede crear un alias para ejecutar esto con el comando. También funciona con cp, mv, dd, tar, gzip/gunzip, cat, etc.. Se pueden encontrar más detalles al respecto en

gitthub Xfennec / progreso

Ashitakalax
fuente
2
Dado que el progreso (como ahora se conoce "cv") rastrea los archivos abiertos y rm no abre los archivos que elimina, esto puede no ser realmente muy útil.
dhag
2
@dhag Tienes razón, pensé que esto funcionaría para rm. Ahora estoy debatiendo si eliminar la respuesta. hmm
Ashitakalax