Tengo un directorio de 30 TB que contiene miles de millones de archivos que formalmente son todos archivos JPEG. Estoy eliminando cada carpeta de archivos como este:
sudo rm -rf bolands-mills-mhcptz
Este comando simplemente se ejecuta y no muestra nada, ya sea que esté funcionando o no.
Quiero ver como esta borrando archivos o cual es el estado actual del comando.
Respuesta aceptada:
Puede usar rm -v
tener rm
imprime una línea por archivo eliminado. De esta manera puedes ver que rm
de hecho está trabajando para eliminar archivos. Pero si tiene miles de millones de archivos, todo lo que verá es que rm
todavía está trabajando No tendrá idea de cuántos archivos ya se eliminaron y cuántos quedan.
La herramienta pv
puede ayudarlo con una estimación del progreso.
http://www.ivarch.com/programs/pv.shtml
Así es como invocarías rm
con pv
con salida de ejemplo
$ rm -rv dirname | pv -l -s 1000 > logfile
562 0:00:07 [79,8 /s] [====================> ] 56% ETA 0:00:05
En este ejemplo artificial le dije a pv
que hay 1000
archivos La salida de pv
muestra que 562 ya se eliminaron, el tiempo transcurrido es de 7 segundos y la estimación para completar es de 5 segundos.
Alguna explicación:
pv -l
hacepv
para contar por saltos de línea en lugar de bytespv -s number
le dice apv
cuál es el total para que pueda darle una estimación.- La redirección a
logfile
al final es para una salida limpia. De lo contrario, la línea de estado depv
se mezcla con la salida derm -v
. Bonificación:tendrá un archivo de registro de lo que se eliminó. Pero cuidado, el archivo se volverá enorme. También puede redirigir a/dev/null
si no necesita un registro.
Para obtener la cantidad de archivos, puede usar este comando:
$ find dirname | wc -l
Esto también puede llevar mucho tiempo si hay miles de millones de archivos. Puedes usar pv
aquí también para ver cuánto ha contado
$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [ <=> ]
278044
Aquí dice que tardó 4 segundos en contar 278k archivos. El recuento exacto al final (278044
) es la salida de wc -l
.
Si no desea esperar el conteo, puede adivinar la cantidad de archivos o usar pv
sin estimación:
$ rm -rv dirname | pv -l > logfile
Así no tendrás estimación para terminar pero al menos verás cuantos archivos ya están borrados. Redirigir a /dev/null
si no necesita el archivo de registro.
Critica:
- realmente necesitas
sudo
? - generalmente
rm -r
es suficiente para eliminar recursivamente. no es necesariorm -f
.