Bagaimana cara mengganti nama direktori melalui baris perintah?

564

Saya sudah mendapatkan direktori /home/user/oldnamedan saya ingin mengganti namanya /home/user/newname. Bagaimana saya bisa melakukan ini di terminal?

NN
sumber
Lihat juga: Cara memindahkan direktori
kenorb
Gunakan selalu mvatau rename.
John Strood

Jawaban:

737
mv /home/user/oldname /home/user/newname
Rafał Cieślak
sumber
Artikel keren. Itulah intinya.
Rafał Cieślak
77
Ini tidak akan berfungsi jika nama baru sudah direktori yang ada. Sebagai gantinya, itu akan memindahkan direktori lama di dalam yang baru.
cxrodgers
9
Jika nama direktori sama dengan huruf besar, Anda akan mendapatkan No such file or directory. Untuk menghindari ini, lakukan sesuatu seperti mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF
9
@cxrodgers: pass --no-target-directory( -T) , untuk menghindari memperlakukan newnamesebagai direktori target.
jfs
123

mv dapat melakukan dua pekerjaan.

  1. Itu dapat memindahkan file atau direktori
  2. Itu dapat mengganti nama file atau direktori

Untuk hanya mengganti nama file atau direktori ketik ini di Terminal:

mv old_name new_name 

dengan ruang antara nama lama dan baru.

Untuk memindahkan file atau direktori, ketikkan ini di Terminal.

mv file_name ~/Desktop 

itu akan memindahkan file ke desktop.

Jika merupakan direktori, Anda harus menambahkan -Rsebelum nama direktori:

mv -R directory_name ~/Desktop
shadi
sumber
3
mvdi Ubuntu adalah dari GNU coreutils. AFAICT tidak memiliki -Ropsi, juga tidak diperlukan saat memindahkan direktori.
arielf
-r bahkan tidak berfungsi
user1735921
Opsi yang benar adalah -T. Lihat jawaban @ bmaupin untuk perilakunya.
kronometrik
39
mv -T /home/user/oldname /home/user/newname

Itu akan mengubah nama direktori jika tujuan tidak ada atau jika ada tetapi kosong. Kalau tidak, itu akan memberi Anda kesalahan.

Jika Anda melakukan ini sebagai gantinya:

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

Satu dari dua hal akan terjadi:

  • Jika /home/user/newnametidak ada, itu akan berganti nama /home/user/oldnamemenjadi/home/user/newname
  • Jika /home/user/newnameada, itu akan pindah /home/user/oldnameke /home/user/newname, yaitu/home/user/newname/oldname

Sumber: Bagaimana memutuskan bahwa mv pindah ke direktori daripada mengganti direktori?

bupupin
sumber
Tidak berfungsi jika Anda ingin menggunakan huruf besar nama direktori dalam sistem file case-insensitive (kemungkinan pada MacOS). mv -T $PWD/analisys $PWD/Analisyskembali mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. Saya mengatasi ini dengan menggunakan nama perantara (yaitu analisys_).
basilikode
Perintah ini mungkin tidak berhasil karena keterbatasan sistem file, tetapi dari perspektif lain berhasil menafsirkan niat Anda (mengubah nama direktori, tidak memindahkannya) :)
bmaupin
Apakah kamu mencoba ini?
Mahmoud S. Marwad
5

Jika Anda ingin mengganti nama direktori pada level Anda di sistem file (mis., Anda berada di direktori home Anda dan ingin mengganti nama direktori yang juga ada di direktori home Anda):

mv Directory ./NewNameDirectory
Matt P
sumber
4

Ini gvfs-moveperintah juga akan mengubah nama file dan direktori.

gvfs-move /home/user/oldname /home/user/newname
Avinash Raj
sumber
3

gvfs-rename akan mengganti nama direktori juga. Ini akan memberikan kesalahan jika direktori dengan nama baru sudah ada. Satu-satunya batasan adalah bahwa Anda tidak dapat menggunakan jalur dengan nama folder. Begitu

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

tidak akan bekerja, tetapi

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

akan bekerja. Tidak berguna seperti mv -T tetapi saya membaca di man bahwa itu dimaksudkan untuk operasi jaringan.

aturan kebun
sumber