วิธีเปลี่ยนชื่อกลุ่มของไฟล์ด้วยสิ่งที่ดูเหมือนพา ธ ไฟล์ Windows ในชื่อของพวกเขา


9

ฉันได้รับไฟล์จำนวนมากโดยที่ชื่อไฟล์มีปัญหา ชื่อไฟล์ทั้งหมดมีจุดเริ่มต้นเหมือนกันซึ่งดูเหมือนจะเป็นไดเรกทอรีไฟล์ของ windows ปัญหาคือมีไฟล์มากกว่า 700 ไฟล์และฉันไม่ต้องการให้เปลี่ยนชื่อทั้งหมดด้วยตนเอง นี่คือตัวอย่างของชื่อไฟล์ (หมายเหตุ: ไม่มีในเหล่านี้มีไดเรกทอรีไฟล์):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

สิ่งสำคัญที่ต้องนำออกไปคือไฟล์แต่ละไฟล์มีG:some\really\long\file\path\then\the\ก่อนชื่อไฟล์ที่ฉันต้องการ

ดังนั้นฉันต้องการไฟล์ดังกล่าวเป็นดังนี้:

name1.jpg
name2.png
filename.txt
file_name.mov

ฉันลองrenameคำสั่งแล้ว แต่ไม่สำเร็จ ฉันยังใหม่กับ Linux และฉันไม่แน่ใจว่าจะไปเกี่ยวกับเรื่องนี้หรือสิ่งที่จะ google ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

คำตอบ:


18

ฉันเพิ่งลบทุกอย่างจนถึงแบ็กสแลชสุดท้ายด้วย rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

ลบ-nหลังจากการทดสอบเพื่อเปลี่ยนชื่อไฟล์จริง

หมายเหตุ

  • -n อย่าทำอะไรเลยเพียงแค่พิมพ์สิ่งที่จะเปลี่ยนแปลง
  • s/old/newแทนที่oldด้วยnew
  • .* จำนวนอักขระใด ๆ
  • \\ เครื่องหมายแบ็กสแลชแรกคือการหลบหลีกส่วนที่สอง
  • เนื่องจาก regex เป็นโลภการแสดงออกนี้.*\\กินแบ็กสแลชก่อนหน้าทั้งหมดด้วย
  • เนื่องจากตัวคั่นสองตัวสุดท้าย//เป็นค่าว่างทุกอย่างที่จับคู่ในส่วนการค้นหาจะถูกลบ

ฉันแค่ต้องการบรรทัดแรกหรือฉันต้องทำทุกไฟล์หรือไม่
kingcobra1986

คุณแค่ต้องการบรรทัดแรก @ kingcobra1986 อื่น ๆ เป็นเพียงแค่ผลลัพธ์ *ตรงกับไฟล์ทั้งหมด แต่ให้ฉันเปลี่ยนที่G*- ทำ - ดังนั้นตอนนี้มันตรงกับไฟล์ทั้งหมดที่เริ่มต้นด้วยGในไดเรกทอรีปัจจุบันและจะทำงานกับพวกเขาทั้งหมดในครั้งเดียว หากพวกเขาอยู่ในหลายไดเรกทอรีเราสามารถจัดการกับมันด้วยวิธีต่าง ๆ
Zanna

ที่ได้ผล คุณช่วยอธิบายว่าเกิดอะไรขึ้นในบรรทัดนั้น?
kingcobra1986

1
@ kingcobra1986 ขอโทษฉันเพิ่มบันทึก หวังว่าชัดเจนถ้าไม่โปรดสอบถามเพิ่มเติม!
Zanna

ฮาฉันชอบความคิดที่จะใช้สิ่งที่.*\\ เป็นโลภมาก.*
Ziazis

10

คุณสามารถทำเช่นนี้ในที่บริสุทธิ์bashโดยใช้การขยายตัวพารามิเตอร์เปลือก

${file##*\\}(cut-up-to-last-pre-prefix) ตัดทุกอย่างตั้งแต่เริ่มต้นชื่อไฟล์จนกระทั่ง\เห็นครั้งสุดท้าย

for file in *; do
    mv -v "$file" "${file##*\\}";
done

ผลลัพธ์การเปลี่ยนชื่อคือ:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’

6

หากคุณกำลังมองหาโซลูชันGUIมีแอปพลิเคชันการเปลี่ยนชื่อจำนวนมาก ฉันจะแนะนำThunarซึ่งเป็นตัวจัดการไฟล์เริ่มต้นสำหรับ Xfce มันมาพร้อมกับเครื่องมือการเปลี่ยนชื่อเป็นกลุ่มที่มีประโยชน์ คุณสามารถติดตั้ง Thunar ได้โดยใช้คำสั่งต่อไปนี้ใน Terminal:

sudo apt-get install thunar

คุณอาจจะสามารถติดตั้งซอฟต์แวร์ Ubuntu ได้เช่นกัน

วิธีใช้ยูทิลิตี้

  1. เมื่อคุณติดตั้ง Thunar แล้วให้เปิดอรรถประโยชน์การเปลี่ยนชื่อเป็นกลุ่ม
  2. คลิกที่ไอคอน+และเพิ่มไฟล์ที่คุณต้องการเปลี่ยนชื่อ
  3. คลิกที่กล่องแบบหล่นลงด้านล่างรายชื่อของไฟล์ที่เลือกและเลือกการค้นหาและแทนที่
  4. ในช่องค้นหา:ป้อนG:some\really\long\file\path\then\the\(ส่วนที่คุณต้องการกำจัด) ให้ปล่อยกล่องแทนที่ด้วย:ว่างไว้ คุณควรเห็นตัวอย่างของการเปลี่ยนแปลงในคอลัมน์ชื่อใหม่
  5. หากต้องการใช้การเปลี่ยนแปลงให้คลิกที่ปุ่มเปลี่ยนชื่อไฟล์

นอกจากการค้นหาและแทนที่ยูทิลิตี้นี้รองรับการดำเนินการต่อไปนี้:

  • แทรกวันที่ / เวลา
  • แทรก / เขียนทับ
  • การนับ
  • ลบตัวละคร
  • ตัวพิมพ์ใหญ่ตัวพิมพ์เล็ก

ไม่มีหนึ่งสำหรับ nautilus (ฉันคิดว่ามี!) ดูเหมือนว่าค่อนข้าง overkill เพื่อแนะนำการติดตั้งเบราว์เซอร์ไฟล์ใหม่เพื่อจุดประสงค์นี้
Zanna

@ Zanna มีหนึ่งใน v3.22 แต่ฉันคิดว่ายังไม่สามารถใช้ได้ใน repos Ubuntu
pomsky

2
Thunar ค่อนข้างมีประโยชน์และดูเหมือนจะอยู่ร่วมกันได้ดีกับเบราว์เซอร์ไฟล์อื่น ๆ ดังนั้นฉันคิดว่ามันคุ้มค่าที่จะติดตั้งเพื่อการนี้ แต่คุณสามารถขยายคำตอบนี้ได้ด้วยคำอธิบายว่าจะทำการเปลี่ยนชื่อจำนวนมากใน Thunar ได้อย่างไร?
Eliah Kagan

1
@EliahKagan และก็มีน้ำหนักเบาด้วย
pomsky

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