เปลี่ยนชื่อหลายไฟล์เพื่อลบคำต่อท้ายทั่วไปจากชื่อไฟล์


4

ฉันมีไดเรกทอรี (ผู้ใช้ Linux) ที่มีไฟล์จำนวนหนึ่งซึ่งบรรจุเครื่องหมาย [!] ไว้ท้ายชื่อไฟล์แต่ละชื่อเพื่อให้แต่ละไฟล์อ่านออกเป็น:

  • foo บางสิ่งบางอย่าง [!]. zip
  • แถบบางอย่าง [!]. zip
  • helloworld [!]. zip
  • เป็นต้น

วิธีที่เร็วที่สุดในการเปลี่ยนชื่อแบทช์เหล่านี้เพื่อลบการรวมอักขระสิ้นสุด [!] ออกจากชื่อไฟล์เหล่านี้คืออะไร

คำตอบ:


4

คุณสามารถใช้renameเครื่องมือเช่นนี้

rename 's/\ \[\!\]//' *.zip

ฉันขอแนะนำให้คุณเพิ่ม-nสวิตช์ครั้งแรกซึ่งเป็นสาเหตุrenameให้แสดงสิ่งที่มันจะทำ แต่ไม่เปลี่ยนชื่อไฟล์ใด ๆ

rename -n 's/\ \[\!\]//' *.zip

โปรดทราบว่าการดำเนินการนี้จะลบการเกิดขึ้นครั้งแรกของ[!]ชื่อไฟล์เฉพาะในกรณีที่มีช่องว่างนำหน้าและไม่ว่าจะอยู่ที่ท้ายชื่อไฟล์หรือไม่ก็ตาม


ไวยากรณ์พื้นฐานของrename:

rename 's/from/to/' filenames

จะแทนที่fromด้วยtoในชื่อไฟล์ทั้งหมด

นี่คือคำอธิบายโดยละเอียด: https://www.computerhope.com/unix/rename.htm


ทราบว่ามีสองrenameคำสั่ง: หนึ่งจากแพคเกจ util-linux และอีกหนึ่งจากแพคเกจ perl คำสั่งที่ฉันอ้างถึงข้างต้นเป็นตัวแปร Perl ตัวแปร Perl เป็นที่นิยมและมีประโยชน์มากกว่า โดยปกติเมื่อคนพูดถึงrenameพวกเขาหมายถึงตัวแปร Perl

ใน debian (และดังนั้น Ubuntu) renameเป็นตัวแปร Perl ตามค่าเริ่มต้น https://stackoverflow.com/questions/22577767/get-the-perl-rename-utility-instead-of-the-built-in-rename

ใน arch linux renameเป็นตัวแปร util-linux ในขณะที่perl-renameเป็นตัวแปร perl https://bbs.archlinux.org/viewtopic.php?id=85128

นี่คือวิธีที่คุณสามารถดูเวอร์ชันที่คุณใช้:

$ rename --version
rename from util-linux 2.30.1
$ perl-rename --version
perl-rename 1.9

1

วิธีที่ง่ายที่สุดอาจใช้ตัวจัดการไฟล์ Krusader และเครื่องมือ Multi Rename

สิ่งนี้จะช่วยให้คุณสามารถเปลี่ยนชื่อไฟล์หลาย ๆ ไฟล์ได้แม้จะเรียกใช้โครงสร้างไดเรกทอรีซ้ำ

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