วิธีการใช้ชื่อไฟล์ปัจจุบันหลายครั้งในคำสั่งไพพ์?


0

ฉันพยายามแปลงชุดไฟล์. mov เป็น mp4 ฉันจะรับชื่อไฟล์จากไปป์เพื่อสร้างคำสั่ง ffmpeg ได้อย่างไร วิธีใช้ข้อโต้แย้งไปป์หลายครั้งในลิงค์โซ่? ฉันพยายามที่จะมีอะไรแบบนั้น:

 ls *.MOV | ffmpeg -y -i $file  "$file.mp4"

คำตอบ:


2

ไพพ์มีประโยชน์เมื่อคุณต้องการใช้เอาต์พุตมาตรฐานของหนึ่งคำสั่งเป็นอินพุตมาตรฐานของคำสั่งอื่น แต่คุณต้องส่งไฟล์เป็นอินพุตไปffmpegไม่ใช่ชื่อไฟล์ในอินพุตมาตรฐาน และคุณจำเป็นต้องเรียกใช้ffmpegหลายครั้งหนึ่งครั้งสำหรับแต่ละอินพุตไฟล์เพื่อรับไฟล์เอาต์พุต

เรื่องสั้นที่สั้นท่อไม่เป็นประโยชน์สำหรับสิ่งนี้คุณต้องวนซ้ำตามคำแนะนำอื่น ๆ แต่ควรอ้างอิงพารามิเตอร์ชื่อไฟล์สองครั้ง:

for file in *.MOV; do
    ffmpeg -y -i "$file" "$file.mp4"
done

คุณพูดถึงในความคิดเห็นที่คุณสามารถเขียนสคริปต์ Perl นั่นจะเกินความเป็นจริงจริงๆ Bash เป็นวิธีที่ง่ายกว่าและเหมาะสมที่สุด โปรดทราบว่าคุณสามารถเขียนสคริปต์ด้านบนในบรรทัดเดียวและเรียกใช้โดยตรงในบรรทัดคำสั่ง

for file in *.MOV; do ffmpeg -y -i "$file" "$file.mp4"; done

0

คุณสามารถทำได้โดยใช้การforวนรอบแบบง่าย

#!/bin/bash

for file in /path/to/*.MOV
do

    echo "Converting $file"
done

ฉันสามารถเขียนสคริปต์ Perl แต่ฉันจะใช้ท่อเพื่อที่จะเข้าใจแนวคิดของท่อ
Alexey Ryazhskikh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.