Bagaimana cara menggabungkan output dari banyak perintah `find`?

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

Bagaimana cara menggabungkan kedua perintah ini?

  1. Baik dengan menggabungkan kedua istilah pencarian dalam satu perintah atau

  2. Sehingga setiap perintah menambahkan outputnya ke file yang sama.

Semoga jelas apa yang saya coba lakukan.

akya
sumber

Jawaban:

25

Menggabungkan:

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

Menambahkan output ke satu file:

find -type f -name "*.avi" -exec md5sum {} + > checklist.chk
find -type f -name "*.mp4" -exec md5sum {} + >> checklist.chk
Florian Diesch
sumber
1
+1 juga menyebutkan kemungkinan menambahkan ke file output.
Dubu
8

Ada banyak cara untuk melakukan ini:

Menggunakan atau -o:

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

Menggunakan Regex:

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

Keduanya akan menulis output ke file checklist.chk.

heemayl
sumber
1
Terima kasih .. Saya tahu tentang operator -o tetapi tidak tahu sintaksnya. Juga tidak tahu tentang regex bisa digunakan seperti ini. Terima kasih :)
akya
4

Dengan -obendera (yang berada di bawah findhalaman manual OPERATOR di )

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