टर्मिनल में, मैं विभिन्न फ़ाइलों पर एक कमांड को कई बार कैसे दोहरा सकता हूं?


13

टर्मिनल में, मैं एक निश्चित निर्देशिका में सभी .MOV फ़ाइलों को .ogv फ़ाइलों में परिवर्तित करने के लिए ffmpeg2theora का उपयोग करना चाहता हूं। हालांकि, निम्नलिखित काम नहीं करता है:

ffmpeg2theora *.MOV

क्या अलग-अलग फाइलों पर कई बार कमांड दोहराने का अच्छा तरीका है?

धन्यवाद!

जवाबों:


20

यदि आप डिफ़ॉल्ट शेल (बैश) का उपयोग करते हैं, तो आप निम्न का उपयोग कर सकते हैं:

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

5
यह स्लैश के बिना काम करने की अधिक संभावना है:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
frabjous

हाँ, आप बिलकुल सही हैं, मैंने अपना उत्तर सही किया।
बजे मार्सेल स्टिमबर्ग

1
आप nocaseglobलो-केस, अपर-केस मिक्स-केस फाइल एक्सटेंशन से मिलान करने के लिए बैश विकल्प भी सेट कर सकते हैं ।
enzotib

धन्यवाद! मैंने पहले कभी भी बैश का इस्तेमाल नहीं किया है लेकिन यह वास्तव में उपयोगी है। (मुझे सीखने के लिए समय!)
एलन सी

11

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

पुनरावृत्ति की गहराई को सीमित करने के लिए, आप -maxdepth 1पहले जोड़ सकते हैं-exec


2
इस उत्तर और मेरे उत्तर के बीच के अंतर को बताने के लिए: खोज का उपयोग उपनिर्देशिकाओं में फ़ाइलों के लिए भी दिखेगा, for file in *.MOVसमाधान केवल वर्तमान निर्देशिका में दिखेगा।
मार्सेल स्टिमबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.