ฉันมีโฟลเดอร์สองสามโฟลเดอร์ที่เป็นหนังสือเสียง ไฟล์มีหมายเลขกำกับอยู่ และฉันต้องการแปลงเป็นไฟล์เดียว ฉันใช้สคริปต์ต่อไปนี้เพื่อแปลง:
#!/bin/bash
if [ ! -d mp3 ]; then
mkdir -p mp3;
fi;
for f in ./*.flac; do echo "file '$f'" >> mylist.txt; done
ffmpeg -f concat -safe 0 -i mylist.txt -b:a 320k mp3/title.mp3
[ -e mylist.txt ] && rm mylist.txt
ปัญหาของฉันคือฉันต้องเปลี่ยนชื่อไฟล์สิบไฟล์แรกเนื่องจากไฟล์เหล่านั้นไม่อยู่ในลำดับที่ถูกต้อง ไฟล์มีชื่อว่า 1 - ชื่อเรื่อง, 2 - ชื่อเรื่อง, 3 - ชื่อเรื่องและอื่น ๆ เพื่อให้ได้ลำดับที่ถูกต้อง ฉันต้องเปลี่ยนชื่อเป็น 01 - หัวเรื่อง, 02 - หัวเรื่อง, ..., 09 - หัวเรื่อง ฉันจะทำสิ่งนั้นด้วย bash script ได้อย่างไร? นอกจากนี้ คงจะดีไม่น้อยหากไฟล์ Playlist.m3u มีการเปลี่ยนแปลงตามนั้น
ขอบคุณสำหรับความช่วยเหลือของคุณ.
@Cyrus โพสต์ลิงก์ที่ถูกต้องเพื่อแก้ไขปัญหาของฉัน สคริปต์ที่แก้ไขแล้วคือ:
#!/bin/bash
if [ ! -d mp3 ]; then
mkdir -p mp3;
fi;
for f in ./*.flac; do echo "file '$f'" >> mylist2.txt; done
sort -V mylist2.txt >> mylist.txt
rm mylist2.txt
ffmpeg -f concat -safe 0 -i mylist.txt -b:a 320k mp3/title.mp3
[ -e mylist.txt ] && rm mylist.txt