Jak połączyć wyjście wielu poleceń `find`?


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

Jak połączyć te dwa polecenia?

  1. Albo przez połączenie obu wyszukiwanych terminów w jednym poleceniu lub

  2. Tak więc każde polecenie dodaje dane wyjściowe do tego samego pliku.

Mam nadzieję, że jasne jest, co próbuję zrobić.

Odpowiedzi:


25

Łącząc:

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

Dodawanie danych wyjściowych do jednego pliku:

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

1
+1 za wspomnienie o możliwości dołączenia do pliku wyjściowego.
Dubu,

8

Istnieje wiele sposobów, aby to zrobić:

Za pomocą lub -o:

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

Za pomocą Regex:

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

Oba zapisują dane wyjściowe do pliku checklist.chk.


1
Dzięki .. Wiedziałem o operatorze -o, ale nie znałem składni. Nie wiedziałem także o regexie, którego można użyć w ten sposób. Dzięki :)
akya,

4

Z -oflagą (która znajduje się w obszarze OPERATORS na findstronie man)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.