![¿Cómo registro xargs -0 rm?](https://rvso.com/image/76409/%C2%BFC%C3%B3mo%20registro%20xargs%20-0%20rm%3F.png)
Tengo una simple necesidad de buscar y eliminar archivos de una determinada extensión de forma recursiva. Así que tengo una sintaxis que buscará y eliminará los archivos y los canalizará xargs -0 rm
, pero parece que no puedo crear un registro de los archivos que se eliminaron.
Lo que tengo hasta ahora:
find /var/www/html -type f -regex ".*/.*\.(png|jpg)" -print0 |xargs -0 rm
Respuesta1
rm
Normalmente permanece en silencio al eliminar archivos. Si desea crear un registro que muestre los archivos eliminados, agregue la -v
opción. Por lo tanto, reemplace:
xargs -0 rm
con:
xargs -0 rm -v >log
Respuesta2
Puedes usarlo find
para eliminar archivos y al mismo tiempo escribir sus nombres en la salida estándar:
find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile
Nota:El orden de -delete
las -print
opciones es importante. La segunda opción sólo se aplicará si la primera devuelve verdadero, es decir, si la primera -delete
opción no pudo eliminar el archivo, entonces su nombre no se imprimirá en la salida estándar. Si lo pone -print
primero, pondrá el nombre del archivo en salida estándar independientemente de si -delete
realmente puede eliminar el archivo.
Nota 2: Tuve que escapar de los corchetes y la línea vertical para que las expresiones regulares funcionen de forma predeterminada con find
la utilidad de mi sistema. Alternativamente, puede especificarlo -regextype
, posix-egrep
por ejemplo. De todos modos, vale la pena probar primero find
el comando sin -delete
opción para comprobar si encuentra archivos correctamente:
find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print