Como combinar a saída de múltiplos 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 adicione sua saída ao mesmo arquivo.

Espero que esteja claro o que estou tentando fazer.

    
por akya 17.11.2015 / 06:19

3 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
    
por Florian Diesch 17.11.2015 / 06:28
8

Existem várias maneiras de fazer isso:

Usando ou -o :

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

Usando o Regex:

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

Ambos gravarão a saída no arquivo checklist.chk .

    
por heemayl 17.11.2015 / 06:26
4

Com o sinalizador -o (que está sob a página de manual OPERATORS in find )

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
    
por Sergiy Kolodyazhnyy 17.11.2015 / 06:26