ใน Linux บางครั้งฉันเปลี่ยนชื่อไฟล์เช่นนี้:
mv dir1/dir2/dir3/file.txt dir1/dir2/dir3/file.txt.old
โปรดทราบว่าฉันต้องการเพียงแค่เปลี่ยนชื่อไฟล์ไม่ย้ายไปยังไดเรกทอรีอื่น
มีคำสั่งที่อนุญาตให้ฉันทำเวอร์ชันย่อของคำสั่งนั้นหรือไม่? ฉันกำลังคิดอะไรบางอย่างเช่น:
mv dir1/dir2/dir3/file.txt file.txt.old
หรืออาจเป็นสิ่งที่ชอบ (เพื่อต่อท้ายชื่อ):
mv dir1/dir2/dir3/file.txt {}.old
เป้าหมายของฉันคือไม่ต้องระบุเส้นทางที่สมบูรณ์อีกครั้ง
ฉันรู้ว่า "ตัวอย่าง" ที่ฉันเขียนไม่ได้ผล แต่เป็นเพียงความคิดว่าฉันต้องการทำอะไร
ฉันไม่ต้องการที่จะ cd ในไดเรกทอรี
(cd dir1/dir2/dir3 && exec mv file.txt{,.old})
มีประสิทธิภาพเช่นเดียวกับรหัสที่ไม่มีกระบวนการย่อยอย่างมีประสิทธิภาพเนื่องจากexec
จะหลีกเลี่ยงการทำงานfork()
ระหว่างการเรียกใช้คำสั่งภายนอกดังนั้นคุณจึงมีทางแยกเพียงทางเดียว