Как переименовать каталог через командную строку?


Ответы:


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


Классная статья. В том-то и дело.
— 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. Может переименовывать файлы или каталоги

Чтобы просто переименовать файл или каталог, введите это в Терминале:

mv old_name new_name 

с пробелом между старым и новым именами.

Чтобы переместить файл или каталог, введите это в Терминале.

mv file_name ~/Desktop 

это переместит файл на рабочий стол.

Если это каталог, который вы должны добавить -Rперед именем каталога:

mv -R directory_name ~/Desktop

3
mvна Ubuntu из ядра GNU Coreutils. УДАЛЕНО у этого нет никакой -Rопции, и это не необходимо при перемещении каталога.
— Ариэльф

-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_).
— Базиликоде

Возможно, команда не была успешной из-за ограничений файловой системы, но, с другой стороны, она была успешной при интерпретации ваших намерений (переименование каталога, а не его перемещение) :)
— bmaupin

ты пробовал это?
— Махмуд С. Марвад

5

Если вы хотите переименовать каталог на своем уровне в файловой системе (например, вы находитесь в своем домашнем каталоге и хотите переименовать каталог, который также находится в вашем домашнем каталоге):

mv Directory ./NewNameDirectory


3

gvfs-rename также переименует каталоги. Это выдаст ошибку, если каталог с новым именем уже существует. Единственным ограничением является то, что вы не можете использовать путь с именем папки. Так

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

не сработает, но

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

будет работать. Не так полезно, как mv -T, но я прочитал в человеке, что он предназначен для сетевых операций.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.