ให้นามสกุลไฟล์. jpg ทั้งหมด


8

ฉันมีไดเรกทอรีและนามสกุลไฟล์บางไฟล์เป็นตัวพิมพ์ใหญ่ (.JPG) แทนที่จะเป็นตัวพิมพ์เล็ก

ฉันต้องการตรวจสอบให้แน่ใจว่าทุกไฟล์มี. jpg เป็นส่วนขยาย ฉันจะทำสิ่งนี้จาก shell prompt ได้อย่างไร?


เป็นที่น่าเสียดายที่ linux ไม่มี AppleScript
gadgetmo

2
มันเยี่ยมมากที่ Linux ไม่มี AppleScript
คณิตศาสตร์

คำตอบ:


15

ใช้การขยายพารามิเตอร์ของเชลล์ :

for f in *.JPG; do
    mv "${f}" "${f%%.JPG}.jpg"
done

"ตัวละครจะดูแลชื่อไฟล์ที่มีช่องว่างเป็นภาพมักจะทำ


5
+1 โซลูชันนี้ใช้ได้แม้ว่าคุณจะมีช่องว่างในชื่อไฟล์ แต่คุณหมายถึง "$ f" แทนที่จะเป็น "f"
Adam Zalcman

การขยายพารามิเตอร์ของเชลล์เป็นบิตลับๆหนึ่งสามารถใช้ basename แทน: สำหรับ f ใน * .JPG; ทำ mv "$ f" "` basename $ f .JPG`.jpg "; เสร็จแล้ว
คณิตศาสตร์

@math: /path/to/*.JPGฉันชอบรุ่นของฉันมันทำงานร่วมกับชื่อไฟล์ที่มีช่องว่างและจะทำงานร่วมกับ คุณสามารถส่งคำตอบของคุณเองได้แน่นอน :)
Johnsyweb

แน่นอนว่าชื่อไฟล์พื้นฐานจะมีไดเรกทอรีชั้นนำ แต่จะทำงานกับช่องว่างภายในชื่อไฟล์ (ฉันไม่คิดว่านี่เป็นคำตอบที่คุ้มค่า;) ดังนั้นฉันจึงโพสต์มันเป็นความคิดเห็น)
คณิตศาสตร์

10

หากคุณสามารถใช้เครื่องมือภายนอก (ไม่เพียง แต่ทุบตี) ให้ตรวจสอบrenameคำสั่ง!

rename .JPG .jpg *

เป็นส่วนหนึ่งของrenameutil-linux


การเปลี่ยนชื่อคือ ... เป็นปัญหา มีรุ่นของการเปลี่ยนชื่อที่มาพร้อมกับperlที่ยอมรับการขัดแย้งต่าง ๆ เพื่อทำสิ่งเดียวกัน
cha0site

คุณช่วยอธิบายเพิ่มเติมอีกหน่อยได้ไหม BTW เวอร์ชันใด?
คณิตศาสตร์


2

ฉันอยากจะแนะนำให้ดูmmvคำสั่ง เหมาะสำหรับงานประเภทนี้อย่างแน่นอน ในสถานการณ์ของคุณมันจะเป็น:

#> mmv "*.JPG" "#1.jpg"

หน้าคนที่เต็มไปด้วยตัวอย่างจึงต้องใช้เวลาที่จะได้ใช้มัน

บนระบบDebianสามารถติดตั้งได้ด้วย:

#> aptitude install mmv

0

หากคุณไม่มีช่องว่างในชื่อไฟล์:

for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done

1
มันต้องการจะพอง่ายที่จะทำให้งานนี้สำหรับไฟล์ที่มีช่องว่างในชื่อ: mvเพียงแค่เพิ่มคำพูดสองรอบข้อโต้แย้งทั้งสอง
Adam Zalcman

ฉันไม่มีที่ว่าง ฉันจะเพิ่มอะไรเพื่อให้สิ่งนี้เกิดขึ้นในไดเรกทอรีปัจจุบัน ในขณะนี้ฉันได้รับข้อผิดพลาด - mv: ไม่สามารถ stat `* .JPG ': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Mark Flint

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