Score:5

การเปลี่ยนชื่อไฟล์โดยใช้ชื่อไฟล์อื่นในโฟลเดอร์เดียวกัน

ธง in

ฉันมีโฟลเดอร์หนึ่งพันโฟลเดอร์ที่มีไฟล์สองไฟล์: โฟลเดอร์หนึ่งมีชื่อสุ่ม (นามสกุล mp4) และอีกไฟล์หนึ่งมีชื่อ (นามสกุล srt)

ฉันตั้งใจจะแทนที่ชื่อไฟล์ที่สร้างขึ้นแบบสุ่มด้วยชื่อไฟล์อื่น โดยเก็บนามสกุล (mp4, mkv หรือ avi) ไว้ในโฟลเดอร์เดียวกัน โดยวิธีการตั้งชื่อไฟล์เพื่อรวม () และอักขระต่างประเทศอื่น ๆ (ó, ü, ฯลฯ )

ในสถานการณ์นี้ ในความคิดของฉัน สคริปต์ควร:

  1. เข้าไปในโฟลเดอร์
  2. รับชื่อที่มีนามสกุล .srt
  3. เปลี่ยนชื่อไฟล์ด้วยนามสกุล mp4 ด้วยชื่อใหม่ (เก็บนามสกุลใดก็ได้)
  4. ออกจากโฟลเดอร์
  5. เดินทางซ้ำโฟลเดอร์เนื่องจากอาจมีโฟลเดอร์ย่อยอื่นๆ

แม้ว่าขั้นตอนที่ 5 อาจถูกแทนที่

ฉันขอขอบคุณมือ ใครสามารถช่วย?

Score:3
ธง jp

ลองใช้สิ่งนี้จากไดเร็กทอรีหลักซึ่งมีไดเร็กทอรีย่อยอื่นๆ อยู่สำหรับการรันแบบแห้ง:

ค้นหา -type f -name "*.srt" |
ในขณะที่ IFS= read -r ผลลัพธ์
    ทำ
    เส้นทาง = "${result%/*}"
    fname="${result##*/}"
    name="${fname%.*}"
    สำหรับไฟล์ใน "$path"/*.{mkv,mp4,avi}
        ทำ
        [ -e "$file" ] && echo mv -- "$file" "$path/$name.${file##*.}"
        เสร็จแล้ว
    เสร็จแล้ว

เมื่อคุณพอใจกับผลลัพธ์แล้ว ให้ลบออก เสียงสะท้อน เพื่อทำการเปลี่ยนชื่อจริง

Vidal avatar
in flag
ทดสอบและทำงาน ขอบคุณมาก. ฉันยอมรับวิธีแก้ปัญหาอื่นที่ได้รับเพราะมันมาก่อนหน้านี้ ฉันชอบข้อเสนอของคุณเพราะมันเข้าใจได้ง่ายสำหรับคนเนิร์ด (เช่นฉัน)
Raffa avatar
jp flag
@Vidal ยินดีต้อนรับคุณมากที่สุด ดีใจที่ฉันมีความสุข :)
Score:3
ธง in

ลองตัวอย่างเล็ก ๆ น้อย ๆ นี้

shopt -s โกลบอลสตาร์
สำหรับ s ใน **/*.srt; ทำ
    m=( "${s%/*}"/*.mp4 )
    printf '%s --> %s\n' "${m[0]}" "${s%.*}.mp4"
    #mv "${m[0]}" "${s%.*}.mp4"
เสร็จแล้ว
shopt -u โกลบอลสตาร์
  • ลบ # ด้านหน้า เอ็มวี หากผลลัพธ์เป็นไปตามที่คาดไว้
  • หากมี mp4 หลายรายการในหนึ่ง dir จะเปลี่ยนชื่อเฉพาะอันแรกที่พบเท่านั้น คุณสามารถใช้ลูปไปที่ เอ็มวี mp4 ทั้งหมดและรวมส่วนต่อท้ายเช่น _1 เป็นต้น
  • หากมี srt หลายตัวในหนึ่ง dir มันจะเปลี่ยนชื่อ mp4 หลายครั้ง ดังนั้นมันจะตั้งชื่อเหมือนกับ srt ล่าสุดที่พบ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา