2 votos

Eliminar todos los archivos que coincidan con el nombre en una lista

Tengo una carpeta con muchas imágenes.

Mi cliente me envió una lista de imágenes rechazadas que necesito borrar de esa carpeta.

La lista es la siguiente: _001,_002,_003,_004,_006,_007,RAM08953,RAM08995,RAM08996,RAM09039,RAM09060,RAM09087,RAM09101,RAM09104,RAM09115,RAM09126,RAM09170,RAM09171,RAM09172,RAM09176,RAM09188 .

¿Cómo puedo ejecutar fácilmente algo que elimine esos archivos, o mover esos archivos dentro de una nueva carpeta o algo sin hacer a mano? Puede ser una aplicación, shell script o cualquier sugerencia.

1voto

siva Puntos23

Para eliminar una lista separada por comas de nombres de archivos de una carpeta, puede utilizar el siguiente:

tr , '\n' <<< "file.jpg,second.jpg,…" | xargs -I{} rm /path/to/folder/{}

Reemplace file.jpg,second.jpg,… con su lista separada por comas de los archivos.
Reemplace /path/to/folder con la ruta de la carpeta que contiene las imágenes.

tr , '\n' reemplaza comas en la entrada con las nuevas líneas. xargs toma las líneas y se ejecuta el comando dado para cada línea, reemplazando {} con cada entrada de línea (como lo indica -I{}). tr es utilizado desde xargs en macOS no admite -d de una costumbre delimitador.

Sin embargo, me doy cuenta de que su lista no incluye extensiones de archivo. Usted puede agregar la extensión al final del comando en su lugar.

tr , '\n' <<< "file,second,…" | xargs -I{} rm /path/to/folder/{}.jpg

0voto

Douglas Puntos10417

Puede eliminar una lista separada por comas de nombres de archivos utilizando un archivo CSV usando el siguiente comando:

for file in $( cat foo.csv | awk '{gsub(",","\n"); print $0}' ); do rm $file; done

Usted puede hacer que sea más seguro, al mover el archivo a la Papelera en lugar de eliminarlo:

for file in $( cat foo.csv | awk '{gsub(",","\n"); print $0}' ); do mv $file ~/.Trash; done

Cómo funciona esto

Esta es una DE/bucle DO que toma primero el contenido de foo.csv y

  • cat foo.csv | Esta salida es el contenido completo del archivo CSV y tuberías para el siguiente comando
  • awk '{gsub(",","\n"); print $0} Esta línea toma la salida de la orden anterior y el uso de la awk utilidad de procesamiento de texto, a continuación, sustituye a la coma (,) para el carácter de nueva línea (\n). Entonces las salidas de cada elemento (print $0) en una línea separada
  • cada línea se convierte en un "elemento" para que el bucle for PARA iterar.
  • para cada elemento que se va a emitir el comando rm $file
  • Usted puede borrar/mover/renombrar/lo que sea de cada archivo modificando el comando después de la do. (Por ejemplo. do mv $file ~/Foo/Bar/$file para moverlo a otra carpeta).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: