Як перейменувати каталог за допомогою командного рядка?


Відповіді:


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. Він може перейменовувати файли чи каталоги

Щоб просто перейменувати файл або каталог, введіть це в Terminal:

mv old_name new_name 

з пробілом між старими та новими іменами.

Щоб перемістити файл або каталог, введіть це у Terminal.

mv file_name ~/Desktop 

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

Якщо це каталог, який слід додати -Rперед ім'ям каталогу:

mv -R directory_name ~/Desktop

3
mvна Ubuntu - це GNU coreutils. AFAICT у нього немає -Rможливості, і це не потрібно при переміщенні каталогу.
аріельф

-r навіть не працює
користувач1735921

Правильний варіант є -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

ти спробував це?
Махмуд С. Марвад

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, але я прочитав у людині, що він призначений для мережевих операцій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.