Điểm:5

Đổi tên tệp bằng tên của tệp khác trong cùng thư mục

lá cờ in

Tôi có một nghìn thư mục chứa hai tệp: một trong số chúng có tên ngẫu nhiên (phần mở rộng mp4) và tệp còn lại có tên (phần mở rộng srt).

Tôi dự định thay thế tên tệp được tạo ngẫu nhiên bằng tên tệp khác, giữ phần mở rộng (mp4, mkv hoặc avi) trong cùng một thư mục. Nhân tiện, tên của các tệp sử dụng để bao gồm () và các ký tự nước ngoài khác (ó, ü, v.v.).

Trong tình huống này, theo ý kiến ​​​​của tôi, kịch bản nên:

  1. Đi vào thư mục
  2. Lấy tên có phần mở rộng .srt
  3. Đổi tên tệp có phần mở rộng mp4 bằng tên mới (giữ nguyên phần mở rộng)
  4. Ra khỏi thư mục
  5. Di chuyển đệ quy các thư mục vì nó có thể chứa các thư mục con khác

Tuy nhiên, bước thứ 5 có thể bị ghi đè.

Tôi sẽ đánh giá cao một bàn tay. Có ai giúp được không?

Điểm:3
lá cờ in

Hãy thử đoạn trích nhỏ này,

shopt -s sao cầu
cho s trong **/*.srt; làm
    m=( "${s%/*}"/*.mp4 )
    printf '%s --> %s\n' "${m[0]}" "${s%.*}.mp4"
    #mv "${m[0]}" "${s%.*}.mp4"
xong
shopt -u gglostar
  • Gỡ bỏ # ở đằng trước mv nếu đầu ra như mong đợi
  • Nếu có nhiều mp4 trong một thư mục, nó sẽ chỉ đổi tên cái đầu tiên mà nó tìm thấy. Bạn có thể dễ dàng sử dụng vòng lặp để mv tất cả mp4 và bao gồm một hậu tố như _1 vân vân.
  • Nếu có nhiều srt trong một thư mục, nó sẽ đổi tên mp4 nhiều lần, do đó, nó sẽ được đặt tên giống như srt mới nhất mà nó tìm thấy.
Điểm:3
lá cờ jp

Hãy thử điều này từ thư mục mẹ nơi các thư mục con khác cư trú để chạy khô:

find -type f -name "*.srt" |
trong khi IFS = đọc -r kết quả
    làm
    đường dẫn = "${kết quả%/*}"
    fname="${result##*/}"
    name="${fname%.*}"
    cho tệp trong "$path"/*.{mkv,mp4,avi}
        làm
        [ -e "$file" ] && echo mv -- "$file" "$path/$name.${file##*.}"
        xong
    xong

Khi bạn hài lòng với đầu ra, hãy xóa tiếng vang để thực hiện đổi tên thực tế.

Vidal avatar
lá cờ in
Đã thử nghiệm và hoạt động. Cảm ơn rất nhiều. Tôi đã chấp nhận giải pháp khác được đưa ra vì nó đến sớm hơn. Tôi thích đề xuất của bạn vì nó dễ hiểu hơn đối với một mọt sách (như tôi).
Raffa avatar
lá cờ jp
@Vidal Bạn rất được chào đón... Đó là niềm vinh hạnh của tôi :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.