Comment combiner la sortie de plusieurs commandes `find`?


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

Comment combiner ces deux commandes?

  1. Soit en combinant les deux termes de recherche dans une seule commande, soit

  2. Pour que chaque commande ajoute sa sortie au même fichier.

J'espère que ce que j'essaie de faire est clair.

Réponses:


25

Combiner:

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

Ajout d'une sortie à un fichier:

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

1
+1 pour avoir également mentionné la possibilité de l'ajouter au fichier de sortie.
Dubu

8

Il existe plusieurs façons de procéder:

En utilisant Ou -o:

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

Utilisation de Regex:

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

Les deux écriront la sortie dans le fichier checklist.chk.


1
Merci .. Je connaissais l'opérateur -o mais je ne connaissais pas la syntaxe. Je ne savais pas non plus que l'expression régulière peut être utilisée comme ça. Merci :)
akya

4

Avec le -odrapeau (qui se trouve sous OPERATORS dans findla page de manuel de)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.