คัดลอกชื่อไฟล์ไปยังโฟลเดอร์อื่น


0

ฉันต้องการคัดลอกชื่อไฟล์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์ เนื้อหาไฟล์จะไม่เปลี่ยนแปลง ไม่มีไฟล์ถูกเขียนทับย้ายหรือคัดลอก มันเกี่ยวกับชื่อไฟล์เท่านั้น

ฉันมีโฟลเดอร์ A พร้อมไฟล์ชื่อ:

  • แสดง - S01E01 - หัวเรื่องที่เป็นคำอธิบาย
  • แสดง - S01E02 - ชื่อบรรยายอื่นหรือไม่? mkv
  • แสดง - S01E03 - ชื่อที่ซับซ้อนอื่น! .mkv
  • ...

ฉันมีโฟลเดอร์ B พร้อมไฟล์ชื่อ:

  • show.s01e01.mkv
  • show.s01e02.mkv
  • show.s01e03.mkv
  • ...

ฉันไม่ต้องการไฟล์ในโฟลเดอร์ A อีกต่อไปเพราะไฟล์ในโฟลเดอร์ B มีคุณภาพดีกว่า แต่ฉันไม่ต้องการเปลี่ยนชื่อไฟล์ทั้งหมดในโฟลเดอร์ B ด้วยตนเองเพื่อให้มีชื่อไฟล์ที่เหมาะสมรวมถึงชื่อตอน ฉันต้องการถ่ายโอนชื่อไฟล์ที่เหมาะสมจากไฟล์ในโฟลเดอร์ A ไปยังไฟล์ในโฟลเดอร์ B โดยอัตโนมัติลำดับตัวอักษรเหมือนกันในทั้งสองโฟลเดอร์ ดังนั้นไฟล์ที่ n ในโฟลเดอร์ B จึงสอดคล้องกับไฟล์ nth ในโฟลเดอร์ A ในโฟลเดอร์ท้าย B จะมีชื่อไฟล์เหมือนกับในโฟลเดอร์ A แต่เนื้อหาไฟล์แตกต่างกันแน่นอน

ตัวอย่าง:

ก่อน:

โฟลเดอร์ A:

  • แสดง - S01E01 - Green Apples.mkv
  • แสดง - S01E02 - ลูกพีชใน Sky.mkv

โฟลเดอร์ B:

  • show.s01e01.mkv
  • show.s01e02.mkv

หลังจาก:

โฟลเดอร์ A:

  • แสดง - S01E01 - Green Apples.mkv
  • แสดง - S01E02 - ลูกพีชใน Sky.mkv

โฟลเดอร์ B:

  • แสดง - S01E01 - Green Apples.mkv
  • แสดง - S01E02 - ลูกพีชใน Sky.mkv

ฉันจะทำสิ่งนี้ใน Bash ได้อย่างไร (หรือเครื่องมือ GNU / Linux อื่น ๆ KDE ก็เช่นกัน)


คุณหมายถึงการคัดลอกไฟล์ที่ยังไม่มีอยู่ในโฟลเดอร์อื่นหรือไม่?
Paul

ชุดไฟล์ทั้งสองมีอยู่แล้ว ตัวอย่างใหม่มีคุณภาพที่ดีกว่าเช่น ฉันไม่ต้องการเปลี่ยนชื่อพวกเขาด้วยตนเองและเพิ่มชื่อตอนทุกตอน แต่ใช้ชื่อจากเวอร์ชั่นเก่าและใช้เป็นเวอร์ชั่นใหม่
ปัญหา

มันยากที่จะเข้าใจลองเพิ่มตัวอย่างผลลัพธ์ที่คุณต้องการ
meda

ฉันเพิ่มตัวอย่าง
problemofficer

คำตอบ:


0

หากต้องการทำสิ่งที่คุณต้องการจะใช้สคริปต์ ไม่เกี่ยวข้องมากเกินไป แต่เป็นการประดิษฐ์ล้อใหม่อีกครั้ง

สิ่งที่ฉันอยากจะแนะนำคือการติดตั้งtvnamer https://github.com/dbr/tvnamer

นี่จะใช้ฐานข้อมูลเพื่อเปลี่ยนชื่อสื่อทั้งหมดของคุณอย่างสม่ำเสมอ หากคุณเรียกใช้สิ่งนี้ในทุกสิ่งทั้งรายการที่มีคุณภาพต่ำและสูงจะมีชื่อเหมือนกันดังนั้นคุณสามารถคัดลอกรายการที่มีคุณภาพสูงไปยังรายการที่มีคุณภาพต่ำcpได้


0

คุณสามารถลองใช้ bash arrays ได้ ฉันกำลังให้วิธีแก้ปัญหาโครงกระดูกด้านล่าง

cd $DIR1
list1=( * )

cd $DIR2
i=0
for f in *
do
  mv $f ${list1[$i]}
  (( i += 1 ))
done

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

list1 เป็นอาร์เรย์ที่มีชื่อไฟล์ในไดเรกทอรีนั้น $ {list1 [0]} เป็นองค์ประกอบแรกในอาร์เรย์ ฯลฯ ฉันไม่แน่ใจว่าสิ่งนี้จะใช้ได้กับชื่อไฟล์ที่มีช่องว่าง ฯลฯ

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