Как объединить вывод нескольких команд `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, но не знал синтаксис. Также не знал о регулярных выражениях можно использовать, как это. Спасибо :)
Акья

4

С -oфлагом (который находится под ОПЕРАТОРАМИ на findстранице man)

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