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


Ответы:


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.