ฉันจะเปลี่ยนชื่อไดเรกทอรีผ่านทางบรรทัดคำสั่งได้อย่างไร


564

ผมได้มีไดเรกทอรีและฉันต้องการที่จะเปลี่ยนชื่อเป็น/home/user/oldname /home/user/newnameฉันจะทำสิ่งนี้ได้อย่างไรในเทอร์มินัล


ดูเพิ่มเติม: วิธีย้ายไดเรกทอรี
kenorb

ใช้เสมอหรือmv rename
John Strood

คำตอบ:


737
mv /home/user/oldname /home/user/newname

4
ที่เกี่ยวข้องbrighthub.com/computing/linux/articles/20667.aspx
NN

บทความดีๆ นั่นคือจุดที่แน่นอน
RafałCieślak

77
สิ่งนี้จะไม่ทำงานหากชื่อใหม่เป็นไดเรกทอรีที่มีอยู่แล้ว แต่จะย้ายไดเรกทอรีเก่าภายในไดเรกทอรีใหม่
cxrodgers

9
No such file or directoryถ้าชื่อไดเรกทอรีเดียวกันมีมูลค่าคุณจะได้รับ mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folderเพื่อหลีกเลี่ยงนี้ทำสิ่งที่ชอบ
DutGRIFF

9
@cxrodgers: pass --no-target-directory( -T)เพื่อหลีกเลี่ยงการnewnameถือเป็นไดเรกทอรีเป้าหมาย
jfs

123

mv สามารถทำงานสองอย่าง

  1. มันสามารถย้ายไฟล์หรือไดเรกทอรี
  2. มันสามารถเปลี่ยนชื่อไฟล์หรือไดเรกทอรี

หากต้องการเปลี่ยนชื่อไฟล์หรือไดเรกทอรีให้พิมพ์ใน Terminal:

mv old_name new_name 

มีช่องว่างระหว่างชื่อเก่าและใหม่

หากต้องการย้ายไฟล์หรือไดเรกทอรีให้พิมพ์สิ่งนี้ในเทอร์มินัล

mv file_name ~/Desktop 

มันจะย้ายไฟล์ไปยังเดสก์ท็อป

หากเป็นไดเรกทอรีคุณควรเพิ่ม-Rก่อนชื่อไดเรกทอรี:

mv -R directory_name ~/Desktop

3
mvบน Ubuntu มาจาก GNU coreutils AFAICT ไม่มี-Rตัวเลือกและไม่จำเป็นเมื่อย้ายไดเรกทอรี
arielf

-r ใช้งานไม่ได้
user1735921

-Tตัวเลือกที่ถูกต้องคือ ดูคำตอบ @ bmaupin สำหรับพฤติกรรมของมัน
โครโนเมตริกเวลา

39
mv -T /home/user/oldname /home/user/newname

จะเปลี่ยนชื่อไดเรกทอรีหากปลายทางไม่มีอยู่หรือมีอยู่ แต่ว่างเปล่า มิฉะนั้นจะทำให้คุณมีข้อผิดพลาด

หากคุณทำสิ่งนี้แทน:

mv /home/user/oldname /home/user/newname

หนึ่งในสองสิ่งจะเกิดขึ้น:

  • หาก/home/user/newnameไม่มีอยู่ระบบจะเปลี่ยนชื่อ/home/user/oldnameเป็น/home/user/newname
  • หาก/home/user/newnameมีอยู่มันจะย้าย/home/user/oldnameไปที่/home/user/newnameเช่น/home/user/newname/oldname

แหล่งที่มา: วิธีการตัดสินใจที่ mv ย้ายไปยังไดเรกทอรีมากกว่าการแทนที่ไดเรกทอรี?


ไม่ทำงานหากคุณต้องการใช้ชื่อไดเรกทอรีให้เป็นตัวพิมพ์ใหญ่ในระบบไฟล์แบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (น่าจะเป็นใน MacOS) ผลตอบแทนmv -T $PWD/analisys $PWD/Analisys mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same fileฉันแก้ไขสิ่งนี้โดยใช้ชื่อกลาง (เช่นanalisys_)
basilikode

คำสั่งอาจไม่ประสบความสำเร็จเนื่องจากข้อ จำกัด ของระบบไฟล์ แต่จากมุมมองอื่นมันก็ประสบความสำเร็จในการตีความเจตนาของคุณ (เปลี่ยนชื่อไดเรกทอรีไม่ย้ายมัน) :)
bmaupin

คุณลองนี่ไหม
Mahmoud S. Marwad

5

หากคุณต้องการเปลี่ยนชื่อไดเรกทอรีที่ระดับของคุณในระบบไฟล์ (เช่นคุณอยู่ที่โฮมไดเร็กตอรี่ของคุณและต้องการเปลี่ยนชื่อไดเรกทอรีที่อยู่ในโฮมไดเร็กตอรี่ของคุณด้วย):

mv Directory ./NewNameDirectory

4

gvfs-moveคำสั่งนี้จะเปลี่ยนชื่อไฟล์และไดเรกทอรีด้วย

gvfs-move /home/user/oldname /home/user/newname

3

gvfs-rename จะทำการเปลี่ยนชื่อไดเรกทอรีด้วย มันจะให้ข้อผิดพลาดหากไดเรกทอรีที่มีชื่อใหม่มีอยู่แล้ว ข้อ จำกัด เพียงอย่างเดียวคือคุณไม่สามารถใช้พา ธ ที่มีชื่อโฟลเดอร์ได้ ดังนั้น

gvfs-rename /home/boo /home/boo-the-dog 

จะไม่ทำงาน แต่

cd /home 
gvfs-rename boo boo-the-dog 

จะทำงาน. ไม่เป็นประโยชน์เท่า mv -T แต่ฉันอ่านด้วยตัวเองว่ามันมีความหมายสำหรับการดำเนินงานเครือข่าย

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