web-dev-qa-db-fra.com

Comment combiner la sortie de plusieurs commandes `find`?

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 commande ou

  2. Alors que chaque commande ajoute sa sortie dans le même fichier.

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

11
akya

La combinaison:

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

Ajout de la sortie dans un fichier:

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

Il y a plusieurs façons de le faire:

Utiliser Ou -o:

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

Utiliser Regex:

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

Les deux vont écrire la sortie dans le fichier checklist.chk.

8
heemayl

Avec le drapeau -o (qui se trouve sous OPERATORS dans la page de manuel de find]

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