GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Eliminar los listados que se filtran mientras se produce una salida?

Tengo un directorio con un montón de extensiones de archivos mezcladas y me gustaría enumerar una extensión de archivo específica (tal vez algo como grep *.mp3 ) y al enumerarlos, elimínelos con una salida. ¿Cómo puedo hacer eso o si hay un engaño, no dude en etiquetarme?

Ejemplo:

grep "*.mp3" . | rm -fr 

Respuesta aceptada:

Comencemos con un directorio con tres mp3 archivos:

$ ls *mp3
a.mp3  b.mp3  c.mp3

Ahora, eliminémoslos después de enumerar lo que estamos eliminando:

$ find . -maxdepth 1 -name '*.mp3' -printf 'Deleting %p\n' -delete
Deleting ./a.mp3
Deleting ./b.mp3
Deleting ./c.mp3

Una vez hecho esto, el mp3 los archivos se han ido:

$ ls *mp3
ls: cannot access '*mp3': No such file or directory

Cómo funciona

  • `buscar .

    Esto inicia un find dominio. Buscará archivos en el directorio actual, . .

  • -maxdepth 1

    Por defecto, find busca recursivamente en subdirectorios. Esto le dice que no haga eso. Con -maxdepth 1 , el comando find solo mirará lo que encuentre en el directorio actual y no explorará ninguno de los subdirectorios del directorio actual.

  • -name '*.mp3'

    Esto le dice a find que busque solo archivos con .mp3 extensión.

  • -printf 'Deleting %p\n'

    Esto le dice a find que imprima un mensaje sobre cada archivo encontrado.

    Por supuesto, puede cambiar esto a otro mensaje si lo desea. Si no desea recibir un mensaje, puede omitir esta opción por completo.

  • -delete

    Esto le dice a find que elimine cada archivo.

Búsqueda que no distingue entre mayúsculas y minúsculas

Si también desea buscar archivos con el nombre .MP3 o .Mp3 etc., entonces necesitamos una búsqueda que no distinga entre mayúsculas y minúsculas y usamos -iname :

find . -maxdepth 1 -iname '*.mp3' -printf 'Deleting %p\n' -delete

Ubuntu
  1. ¿Cómo imprimir una salida de varias líneas en la misma línea?

  2. ¿Cómo encontrar todos los archivos relacionados con un software?

  3. ¿No encuentras la papelera?

  4. ¿Encontrar la dirección Mac en el sistema de archivos?

  5. ¿Cómo encuentro la identificación del proceso en Ubuntu?

Cómo encontrar la dirección MAC en Ubuntu

Cómo encontrar archivos en la línea de comandos de Ubuntu

¿Skype no encuentra la entrada de audio?

¿Encontrar la línea de comando?

¿Guardar el resultado de Find como una variable en un script de Shell?

Averigüe si el sistema operativo se ejecuta en un entorno virtual