Eliminar archivos que contengan ciertos caracteres

Eliminar archivos que contengan ciertos caracteres

Tengo una lista de archivos en un directorio y necesito eliminar todos los archivos que contengan un 0 o un 7. Siento que necesito usar grep pero no estoy muy seguro. ¿Algunas ideas?

Respuesta1

Lo que desea hacer es evaluar sus archivos de acuerdo con una prueba condicional específica y realizar una acción en cada archivo de acuerdo con el resultado de la prueba condicional. Este es el propósito exacto del findcomando.

Aquí hay un portátil (compatible con POSIX) comando para eliminar archivos normales que tienen un contenido que incluye un "0" o un "7":

find . -type f -exec grep -q '[07]' {} \; -exec rm {} +

Tenga en cuenta queesterecursivamentebusca en el directorio actual.

Si eso no es lo que desea, puede verificar si el -maxdepthprimario está disponible (en cuyo caso también puede usar el primario -delete; POSIX no especifica ninguno de los dos):

find . -maxdepth 1 -type f -exec grep -q '[07]' {} \; -delete

O bien, puede aplicar las técnicas proporcionadas en:

Respuesta2

grep -l '[07]' DirToYourFiles/* | xargs rm -f

grep -lsignifica listar solo nombres de archivos

[07]significa 0 o 7

xargsles convierte en una orden.

Eso supone que los nombres de los archivos no contienen espacios en blanco, caracteres de nueva línea, comillas simples, comillas dobles o barras invertidas. Con las utilidades GNU, puedes hacerlo más confiable con:

grep -lZ '[07]' DirToYourFiles/* | xargs -r0 rm -f

información relacionada