Як поєднати вихід декількох команд `find`?


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

Як поєднати ці дві команди?

  1. Або поєднанням обох пошукових термінів в одній команді або

  2. Так що кожна команда додає свій вихід у один і той же файл.

Сподіваюся, зрозуміло, що я намагаюся зробити.

Відповіді:


25

Поєднання:

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

Додавання виводу в один файл:

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

1
+1 також згадує можливість додавання до вихідного файлу.
Дубу

8

Існує багато способів зробити це:

Використовуючи або -o:

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

Використання Regex:

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

Обидва записують вихід у файл checklist.chk.


1
Дякую .. Я знав про оператора -o, але не знав синтаксису. Також не знав про регекс можна використовувати так. Дякую :)
akya

4

З -oпрапором (який знаходиться в розділі ОПЕРАТОРИ на findчоловічій сторінці)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.