¿Cómo registro xargs -0 rm?

¿Cómo registro xargs -0 rm?

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

rmNormalmente permanece en silencio al eliminar archivos. Si desea crear un registro que muestre los archivos eliminados, agregue la -vopción. Por lo tanto, reemplace:

xargs -0 rm

con:

xargs -0 rm -v >log

Respuesta2

Puedes usarlo findpara 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 -deletelas -printopciones es importante. La segunda opción sólo se aplicará si la primera devuelve verdadero, es decir, si la primera -deleteopción no pudo eliminar el archivo, entonces su nombre no se imprimirá en la salida estándar. Si lo pone -printprimero, pondrá el nombre del archivo en salida estándar independientemente de si -deleterealmente 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 findla utilidad de mi sistema. Alternativamente, puede especificarlo -regextype, posix-egreppor ejemplo. De todos modos, vale la pena probar primero findel comando sin -deleteopción para comprobar si encuentra archivos correctamente:

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print

información relacionada