Come combinare l'output di più comandi `find`?


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

Come combinare questi due comandi?

  1. O combinando entrambi i termini di ricerca in un comando o

  2. In modo che ogni comando aggiunga il suo output allo stesso file.

Spero sia chiaro cosa sto cercando di fare.

Risposte:


25

La combinazione:

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

Aggiunta di output a un file:

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

1
+1 per menzionare anche la possibilità di aggiungere al file di output.
Dubu,

8

Esistono molti modi per farlo:

Usando O -o:

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

Utilizzando Regex:

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

Entrambi scriveranno l'output nel file checklist.chk.


1
Grazie .. Conoscevo l'operatore -o ma non conoscevo la sintassi. Inoltre, non sapevo di regex può essere usato in questo modo. Grazie :)
Akya il

4

Con la -obandiera (che si trova sotto OPERATORI nella findpagina man di)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.