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.

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

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.