คุณสามารถใช้ตัวเลือกในการ-exec
find
ที่นี่'{}'
จะถูกแทนที่ด้วยชื่อไฟล์ของไฟล์ MP4 ทุกไฟล์ สิ่งนี้จะจัดการกับชื่อไฟล์ทุกประเภทแม้แต่ที่มีช่องว่างหรือขึ้นบรรทัดใหม่ คุณต้องระบุให้-maxdepth 1
ค้นหาเฉพาะไดเรกทอรีปัจจุบัน
find . -iname "*.mp4" -maxdepth 1 -exec mp4box -inter 500 '{}' \;
ทางเลือกวิธีการที่ซับซ้อนมากขึ้นจะเกี่ยวข้องกับท่อเอาท์พุทจากเข้าไปในวงด้วยfind
read
ที่นี่ทุกไฟล์จะถูกคั่นด้วยโดยNUL
ตัวละครและคุณจำเป็นต้องบอกในการแยกสัญญาณเข้าบนตัวละครตัวนี้ซึ่งจะทำได้โดยread
-d ''
คุณต้องอ้างอิงตัวแปร"$file"
ดังนั้นช่องว่างหรือตัวอักษรกลมในชื่อจะถูกเก็บไว้
find . -iname "*.mp4" -maxdepth 1 -print0 | while IFS= read -d '' -r file; do mp4box -inter 500 "$file"; done
ce_002.mp4: unknown primary or operator
ฉันกำลังทำอะไรผิดที่นี่หรือไม่?