¿Cómo combinar la salida de múltiples comandos `find`?


11
find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + > checklist.chk

¿Cómo combinar estos dos comandos?

  1. Combinando ambos términos de búsqueda en un comando o

  2. Para que cada comando agregue su salida al mismo archivo.

Espero que esté claro lo que estoy tratando de hacer.

Respuestas:


25

Combinatorio:

find -type f \( -name "*.avi" -or -name '*.mp4' \) -exec md5sum {} + > checklist.chk 

Agregar salida a un archivo:

find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + >> checklist.chk

1
+1 por mencionar también la posibilidad de agregar al archivo de salida.
Dubu

8

Hay muchas maneras de hacer esto:

Usando O -o:

find . -type f \( -name '*.avi' -o -name '*.mp4' \) -exec md5sum {} + > checklist.chk

Usando Regex:

find . -type f  -regextype posix-extended -regex '.*\.(avi|mp4)$' -exec md5sum {} + > checklist.chk

Ambos escribirán la salida en el archivo checklist.chk.


1
Gracias ... Sabía sobre el operador -o pero no conocía la sintaxis. Además, no sabía sobre expresiones regulares se puede utilizar de esta manera. Gracias :)
akya

4

Con la -obandera (que está debajo de OPERADORES en findla página del manual)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.