ในเทอร์มินัลฉันจะทำคำสั่งซ้ำหลายครั้งในไฟล์ต่างกันได้อย่างไร?


13

ในเทอร์มินัลฉันต้องการใช้ ffmpeg2theora เพื่อแปลงไฟล์. MOV ทั้งหมดในไดเรกทอรีบางไฟล์เป็นไฟล์. gog อย่างไรก็ตามสิ่งต่อไปนี้ใช้ไม่ได้:

ffmpeg2theora *.MOV

มีวิธีที่ดีในการทำซ้ำคำสั่งหลายครั้งในไฟล์ต่างกันหรือไม่?

ขอบคุณ!

คำตอบ:


20

หากคุณใช้เชลล์เริ่มต้น (ทุบตี) คุณสามารถใช้สิ่งต่อไปนี้:

for file in *.MOV; do ffmpeg2theora "$file"; done

5
นี่คือแนวโน้มที่จะทำงานได้โดยไม่ต้องทับไปนี้:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
frabjous

ใช่คุณพูดถูกต้องฉันแก้ไขคำตอบแล้ว
Marcel Stimberg

1
คุณสามารถตั้งค่าnocaseglobตัวเลือก bash ให้ตรงกับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
enzotib

ขอขอบคุณ! ฉันไม่เคยใช้ทุบตีมาก่อน แต่มันมีประโยชน์จริงๆ (ถึงเวลาที่ฉันจะเรียนรู้!)
อลันซี

11

find . -iname '*.mov' -exec ffmpeg2theora '{}' \;

หากต้องการจำกัดความลึกของการเรียกซ้ำคุณสามารถเพิ่มได้-maxdepth 1ก่อน-exec


2
เพียงเพื่อระบุความแตกต่างระหว่างคำตอบนี้และคำตอบของฉัน: การใช้ find จะค้นหาไฟล์ในไดเรกทอรีย่อยfor file in *.MOVโซลูชันจะค้นหาเฉพาะในไดเรกทอรีปัจจุบัน
Marcel Stimberg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.