Birden çok "find" komutunun çıktısını nasıl birleştirebilirim?


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

Bu iki komut nasıl birleştirilir?

  1. Her iki arama terimini tek bir komutta birleştirerek veya

  2. Böylece her komut çıktısını aynı dosyaya ekler.

Umarım ne yapmaya çalıştığım açıktır.

Yanıtlar:


25

birleştirme:

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

Bir dosyaya çıktı ekleme:

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

1
+1 ayrıca çıktı dosyasına ekleme olasılığını da belirtir.
Dubu

8

Bunu yapmanın birçok yolu vardır:

Veya kullanarak -o:

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

Regex Kullanımı:

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

Her ikisi de çıktıyı dosyaya yazacaktır checklist.chk.


1
Teşekkürler .. -o operatörünü biliyordum ama sözdizimini bilmiyordum. Ayrıca regex böyle kullanılabilir de bilmiyordum. Teşekkürler :)
akya

4

İle -o(içinde OPERATÖRLERE altındadır bayrağı findbireyin adam sayfası)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.