เป็นหลักแอปพลิเคชันชุดคำสั่งต่อไปนี้:
ffmpeg -i "01.mkv" -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy "test.mkv"
ความหวังของฉันคือการเรียกใช้สิ่งนี้ในไดเรกทอรีและมีไฟล์ที่แก้ไขใหม่ทั้งหมดที่มีชื่อไฟล์เก่าและไฟล์เก่าที่ต่อท้ายด้วย "old_" หรือบางอย่างที่คล้ายกัน ฉันรู้ว่าไม่มีอะไรเกี่ยวกับ bash แต่มีประสบการณ์บางอย่างกับ c ++ และ java ดังนั้นคำศัพท์ไม่ใช่ปัญหาฉันเพิ่งไม่เคยดู bash มาก่อน ขอบคุณ!
แก้ไข: เพื่อความชัดเจนฉันต้องการไฟล์ใหม่เป็น "01.mkv" และไฟล์เก่าที่จะเปลี่ยนชื่อเป็น "old_01.mkv" งานวิจัยของฉันบอกฉันว่าสิ่งนี้อาจต้องใช้เพ่งพิศ แต่ฉันรู้น้อยลงกว่าที่ฉันทุบตี
แก้ไข 2: ฉันรู้ว่าฉันควรจะให้สิ่งที่ฉันสามารถรวบรวมมาด้วยตัวเองจนถึงขณะนี้
#!/bin/bash
for i in $( ls ); do
ffmpeg -i $i -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy $i
done
bash
โดยการตรวจสอบ for
คำแถลง
$i = old_$i
? หรือฉันจะใช้บรรทัดคำสั่งเหมือนใน terminal ปกติหรือไม่? ชอบ for (blah blah) cp $i old_$i
. ฉันเคยเห็นผู้คนพูดถึงเพ่งพิศในคำถามที่เกี่ยวข้อง แต่ดูเหมือนจะซับซ้อนเกินไปสำหรับสิ่งที่ฉันทำ ดูเหมือนว่าฉันจะไม่สามารถทำงานได้ด้วยซ้ำเว้นแต่ฉันอาจทำผิดไป