วิธีการรวมเอาท์พุทของคำสั่ง '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 สำหรับการพูดถึงความเป็นไปได้ที่จะผนวกเข้ากับไฟล์เอาต์พุต
Dubu

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 แต่ไม่รู้จักไวยากรณ์ ยังไม่ทราบเกี่ยวกับ regex สามารถใช้เช่นนี้ ขอบคุณ :)
akya

4

ด้วยการ-oตั้งค่าสถานะ (ซึ่งอยู่ภายใต้ OPERATORS ในfindหน้าคนของ)

find . -type f \( -name "*.avi" -o -name "*.mp4" \) -exec md5sum {} + > checklist.chk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.