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


Відповіді:


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.