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.

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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.