¿Cómo elimino todos los archivos que contienen una determinada cadena en un directorio en UNIX?

¿Cómo elimino todos los archivos que contienen una determinada cadena en un directorio en UNIX?

Encontré varios ejemplos que funcionan siempre que no haya espacios en los nombres de los archivos. Desafortunadamente, tengo espacios en mis nombres de archivos (no es mi elección, de hecho son los que necesito eliminar).

Así, por ejemplo, esto es lo que pensé que funcionaría:

encontrar . -tipo f | grep ).MOV | xargs rm

porque quiero eliminar los archivos como:

  • L112 (1).MOV
  • L113 (1).MOV
  • L113 (2).MOV
  • etc.

y quiero mantener los archivos como

  • L112.MOV
  • L113.MOV
  • L114.MOV
  • etc.

Esto encuentra los archivos correctamente:

encontrar . -tipo f | grep ).MOV

pero cuando lo canalizo a rm, los espacios en el nombre del archivo lo estropean.

Cualquier ayuda sería muy apreciada.

Respuesta1


rm *\).MOV

Respuesta2

Dígale xargsque use nuevas líneas como delimitadores:

find . -type f | grep ).MOV | xargs -d'\n' rm

Mejor, haga findla combinación y use -print0y xargs -0permitacualquiercarácter en los nombres de archivos, incluso \n!

find . -type f -name '*).MOV' -print0 | xargs -0 rm

Aún mejor, simplemente findllame rmdirectamente.

find . -type f -name '*).MOV' -exec rm {} +

Mejor, omítelo rmy haz findque lo borre.

find . -type f -name '*).MOV' -delete

O en este caso concreto, ¿quién necesita toda la maquinaria pesada?

rm *\).MOV

Respuesta3

Prueba esto:

find . -name "*).MOV" -exec rm {} \;

Respuesta4

En la mayoría de las instalaciones de Unix, puede indicar un espacio en un nombre de archivo anteponiendo una barra invertida. Entonces, por ejemplo, prueba esto:

mkdir blah
cd blah
touch file1
touch file2
touch "file 3"
touch "file 4"

Haz un "ls" y deberías ver esto:

archivo 3 archivo 4 archivo1 archivo2

Ahora haz "ls *\ *" y deberías ver todo lo que tenga un espacio:

archivo 3 archivo 4

Entonces, ¿quizás solo necesitas un "rm *\ *"? O modifique ligeramente esa expresión regular para adaptarla a sus necesidades.

¡Espero que ayude!

información relacionada