Wie kombiniere ich die Ausgabe mehrerer Suchbefehle?

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

Wie kombiniere ich diese beiden Befehle?

  1. Entweder durch Kombinieren beider Suchbegriffe in einem Befehl oder

  2. Damit jeder Befehl seine Ausgabe zur gleichen Datei hinzufügt.

Ich hoffe, es ist klar, was ich versuche zu tun.

akya
quelle

Antworten:

25

Kombinieren:

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

Hinzufügen einer Ausgabe zu einer Datei:

find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + >> checklist.chk
Florian Diesch
quelle
1
+1 für die Erwähnung der Möglichkeit, an die Ausgabedatei anzuhängen.
Dubu
8

Es gibt viele Möglichkeiten, dies zu tun:

Verwenden von Or -o:

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

Regex verwenden:

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

Beide schreiben die Ausgabe in die Datei checklist.chk.

heemayl
quelle
1
Danke. Ich wusste über den Operator -o Bescheid, kannte aber die Syntax nicht. Auch wusste nicht über Regex kann so verwendet werden. Danke :)
Akya
4

Mit der -oFlagge (die sich unter OPERATORS in findder Manpage befindet)

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