GNU/Linux >> Tutoriales Linux >  >> Linux

¿Obteniendo la opción -exec en Find To Work?

Estoy tratando de hacer find imprima una lista de directorios que contienen archivos que no sean imágenes jpg, pero creo que mi uso de -exec la opción está rota. Mi entorno es Cygwin Bash.

$ find ! -iname "*.JPG$" -exec dirname

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {}

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname ;

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname ;

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {};

find: missing argument to `-exec'

Respuesta aceptada:

Un -exec debe terminar con un ; o un + . El ; hace que el comando se ejecute una vez por nombre de archivo encontrado, mientras que + hace que el comando se ejecute una vez para todos los nombres de archivo.

Aquí hay un ejemplo práctico:

find ! -iname "*.JPG" -exec dirname {} ;

Algunas diferencias notables de sus intentos:

  1. Debe haber un espacio entre {} y ;
  2. El ; debe escaparse, porque es un metacarácter de shell.
  3. Como señaló @muru en su respuesta, -iname toma un globo, no una expresión regular

Linux
  1. Una alternativa amigable a la herramienta de búsqueda en Linux

  2. Buscar -exec + Vs Buscar | Xargs:¿Cuál elegir?

  3. ¿Salir de Find si falla un -exec?

  4. Linux:¿obtener archivos para la fecha actual en Linux?

  5. find -exec una función de shell en Linux?

¿Cómo funciona la punta adhesiva?

¿Cómo funcionan las partes internas de Sudo?

¿Conseguir que 256 colores funcionen en Tmux?

Linux:¿obtener capacidades de la unidad de CD/DVD cuando los dispositivos Wodim no funcionan?

¿Encuentra la computadora en una red Lan?

El comando find Directory de Linux:Explicación