Làm cách nào để truy cập Thư mục / Thư mục con / Tệp bằng các vòng lặp lồng nhau để chuyển đổi tệp?


0

Trong một cấu trúc như thế này:

/home/me/Videos/Downloads/Videos/xml tutorials/Main/video1.mp4
/home/me/Videos/Downloads/Videos/xml tutorials/Main/video2.mp4
....
/home/me/Videos/Downloads/Videos/java tutorials/Main/video1.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Main/video2.mp4
....

Tôi cần chuyển đổi video và lưu các tệp mới như thế này:

/home/me/Videos/Downloads/Videos/xml tutorials/Converted/video1.mp4
/home/me/Videos/Downloads/Videos/xml tutorials/Converted/video2.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Converted/video1.mp4
/home/me/Videos/Downloads/Videos/java tutorials/Converted/video2.mp4

Tôi muốn chuyển đổi các video này bằng ffmpegcách chạy một vòng lặp lồng nhau thông qua Folder/Subfolders/Videos.

Bằng cách chạy này, tôi có thể lặp qua tất cả các tệp trong thư mục hiện tại:

for f in *; do ffmpeg -i "$f" ... ; done

Làm cách nào tôi có thể sử dụng các vòng lặp lồng nhau cho việc này, để bash có thể tự động duyệt Videos/xml tutorials/main/và thực hiện chuyển đổi, đặt chúng vào Videos/xml tutorials/convertedvà tự di chuyển đến Videos/java tutorials/main/?

Câu trả lời:


1

Cuối cùng đã tìm ra nó, hầu hết có lẽ có một cách hiệu quả / tối ưu hóa hơn để làm điều đó, nhưng bây giờ bất cứ điều gì làm việc. Nhưng ffmpeg đã không lấy khoảng trắng trong tên nên phải đổi tên tất cả chúng bằng cách thay thế khoảng trắng bằng dấu gạch dưới.

Trong thư mục Video có các hướng dẫn khác nhau, chạy công việc này -

for f in * ; do
  for g in "$f"/Main/* ; do
     ffmpeg -i "$g" -s 854x480 -c:v libx265 "$f"/Converted/$(basename $g)
  done
done

Tại đây, $flấy tên của các thư mục và sau đó $glấy tên của các tệp cùng với đường dẫn và tiện ích mở rộng của chúng.

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.