Trong thiết bị đầu cuối, làm thế nào tôi có thể lặp lại một lệnh nhiều lần trên các tệp khác nhau?


13

Trong thiết bị đầu cuối, tôi muốn sử dụng ffmpeg2theora để chuyển đổi tất cả các tệp .MOV trong một thư mục nhất định thành các tệp .ogv. Tuy nhiên, những điều sau đây không hoạt động:

ffmpeg2theora *.MOV

Có cách nào tốt để lặp lại lệnh nhiều lần trên các tệp khác nhau không?

Cảm ơn!

Câu trả lời:


20

Nếu bạn sử dụng shell mặc định (bash), bạn có thể sử dụng như sau:

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

5
Điều này có nhiều khả năng hoạt động mà không có dấu gạch chéo:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
frabjous

vâng, bạn hoàn toàn đúng, tôi đã sửa câu trả lời của tôi.
Marcel Promotionberg

1
Bạn cũng có thể đặt nocaseglobtùy chọn bash để khớp với phần mở rộng tệp chữ thường, chữ hoa, chữ thường.
enzotib

Cảm ơn bạn! Tôi chưa bao giờ sử dụng bash trước đây nhưng nó thực sự hữu ích. (Thời gian để tôi đi học!)
Alan C

11

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

Để giới hạn độ sâu đệ quy, bạn có thể thêm -maxdepth 1trước-exec


2
Chỉ cần nêu ra sự khác biệt giữa câu trả lời này và câu trả lời của tôi: Sử dụng find cũng sẽ tìm kiếm các tệp trong thư mục con, for file in *.MOVgiải pháp sẽ chỉ tìm trong thư mục hiện tại.
Marcel Promotionberg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.