mv
มันเป็นบรรทัดคำสั่งขั้นพื้นฐานที่ออกแบบมาเพื่อทำสิ่งหนึ่งและทำมันได้ดี (Unix ปรัชญา): ไฟล์ย้าย (s) หรือ directorie (s)
คุณสามารถแฮ็คSTDOUT
& STDIN
เพื่อแก้ไขสตริงปลายทางได้ทันที แต่ไม่ใช่แฮ็คอัจฉริยะ
เปลี่ยนชื่อ (หนึ่งของ Perl)
มีเครื่องมืออื่น ๆ ที่มีชื่อเดียวกันซึ่งอาจหรืออาจจะไม่สามารถทำได้ดังนั้นควรระมัดระวัง
เมื่อผู้คนพูดถึงrename
เราคิดเกี่ยวกับสิ่งนี้ไม่ใช่ELF
คนที่มีพลังน้อยกว่า (เวทมนตร์?)
มันไม่ธรรมดามันเป็น Perl คุณสามารถผ่านฟังก์ชั่นของ Perl ได้และมันก็มีประสิทธิภาพมาก
ลองพิจารณาตัวอย่างนี้:
คุณต้องการเปลี่ยนชื่อกลุ่มไฟล์เช่น
foobar_1.txt
foobar_2.txt
foobar_3.txt
คุณสามารถเพิ่มค่าศูนย์เป็นตัวเลขด้วยsprintf()
เช่นนี้ (โดยใช้ regex, heh, มันคือ Perl: D):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
ตอนนี้คุณมี:
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
ไม่ใช่คำสั่งพื้นฐานจริงๆเหรอ?
การเปลี่ยนชื่อไม่ได้ออกแบบมาเพื่อย้าย dirแต่สามารถทำได้:
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
ไฟล์ที่ถูกย้าย
/tmp/file
code บางรหัสที่เราเห็นใน*.stackexchange.*
เว็บไซต์
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
มันไม่ใช่วิธีที่จะไปมันเป็นรถธรรมดาเพียงเพื่ออธิบายว่าทำไมต้องใช้เครื่องมือที่ถูกต้องในเวลาที่เหมาะสม
type -a rename
และrename --version
คืออะไร