Como combinar a saída de vários comandos `find`?

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

Como combinar esses dois comandos?

  1. Combinando os dois termos de pesquisa em um comando ou

  2. Para que cada comando inclua sua saída no mesmo arquivo.

Espero que esteja claro o que estou tentando fazer.

akya
fonte

Respostas:

25

Combinando:

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

Adicionando saída a um arquivo:

find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + >> checklist.chk
Florian Diesch
fonte
1
+1 por mencionar também a possibilidade de anexar ao arquivo de saída.
Dubu
8

Há muitas maneiras de fazer isso:

Usando Ou -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 gravam a saída no arquivo checklist.chk.

heemail
fonte
1
Obrigado .. Eu sabia sobre o operador -o, mas não sabia a sintaxe. Também não sabia sobre regex, pode ser usado assim. Obrigado :)
akya
4

Com o -osinalizador (que está sob a findpágina de manual OPERADORES )

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