Jak zmienić nazwę katalogu za pomocą wiersza poleceń?

564

Mam katalog /home/user/oldnamei chcę zmienić nazwę na /home/user/newname. Jak mogę to zrobić w terminalu?

NN
źródło
Zobacz także: Jak przenieść katalog
kenorb
Używaj zawsze mvlub rename.
John Strood

Odpowiedzi:

737
mv /home/user/oldname /home/user/newname
Rafał Cieślak
źródło
Fajny artykuł. Właśnie o to chodzi.
Rafał Cieślak,
76
To nie zadziała, jeśli nowa nazwa jest już istniejącym katalogiem. Zamiast tego przeniesie stary katalog do nowego.
cxrodgers
9
Jeśli nazwa katalogu jest taka sama jak wielkie litery, otrzymasz No such file or directory. Aby tego uniknąć, zrób coś takiego mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF,
9
@cxrodgers: pass --no-target-directory( -T) , aby uniknąć traktowania newnamejako katalogu docelowego.
jfs
123

mv może wykonać dwie prace.

  1. Może przenosić pliki lub katalogi
  2. Może zmieniać nazwy plików lub katalogów

Aby zmienić nazwę pliku lub katalogu, wpisz go w Terminalu:

mv old_name new_name 

ze spacją między starymi i nowymi nazwami.

Aby przenieść plik lub katalog, wpisz go w Terminalu.

mv file_name ~/Desktop 

przeniesie plik na pulpit.

Jeśli jest to katalog, który powinieneś dodać -Rprzed nazwą katalogu:

mv -R directory_name ~/Desktop
Shadi
źródło
3
mvna Ubuntu pochodzi z GNU coreutils. AFAICT nie ma -Ropcji ani nie jest konieczne podczas przenoszenia katalogu.
arielf
-r nawet nie działa
użytkownik1735921
Prawidłowa opcja to -T. Zobacz @ bmaupin w odpowiedzi na jego zachowanie.
chronometr
39
mv -T /home/user/oldname /home/user/newname

Spowoduje to zmianę nazwy katalogu, jeśli miejsce docelowe nie istnieje lub jeśli istnieje, ale jest puste. W przeciwnym razie pojawi się błąd.

Jeśli zrobisz to zamiast tego:

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

Stanie się jedna z dwóch rzeczy:

  • Jeśli /home/user/newnamenie istnieje, zmieni nazwę /home/user/oldnamena/home/user/newname
  • Jeśli /home/user/newnameistnieje, przeniesie /home/user/oldnamesię /home/user/newname, tj/home/user/newname/oldname

Źródło: Jak zdecydować, że mv przenosi się do katalogu zamiast go zastępować?

bmaupin
źródło
Nie działa, jeśli chcesz używać wielkich liter w nazwie katalogu w systemie plików bez rozróżniania wielkości liter (prawdopodobnie w systemie MacOS). mv -T $PWD/analisys $PWD/Analisyszwraca mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. Obejrzałem to, używając nazwy pośredniej (tj analisys_.).
basilikode
Komenda mogła się nie powieść z powodu ograniczeń systemu plików, ale z innej perspektywy udało się zinterpretować twoje zamiary (zmiana nazwy katalogu, a nie przeniesienie go) :)
bmaupin
próbowałeś tego?
Mahmoud S. Marwad
5

Jeśli chcesz zmienić nazwę katalogu na swoim poziomie w systemie plików (np. Jesteś w katalogu domowym i chcesz zmienić nazwę katalogu, który również znajduje się w katalogu domowym):

mv Directory ./NewNameDirectory
Matt P.
źródło
4

To gvfs-movepolecenie zmieni także nazwy plików i katalogów.

gvfs-move /home/user/oldname /home/user/newname
Avinash Raj
źródło
3

gvfs-rename zmieni również nazwy katalogów. Daje błąd, jeśli katalog o nowej nazwie już istnieje. Jedynym ograniczeniem jest to, że nie można użyć ścieżki z nazwą folderu. Więc

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

nie zadziała, ale

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

będzie działać. Nie tak przydatny jak mv-T, ale przeczytałem w człowieku, że był przeznaczony do operacji sieciowych.

thebunnyrules
źródło