Wie benenne ich ein Verzeichnis über die Befehlszeile um?

564

Ich habe das Verzeichnis /home/user/oldnameund möchte es in umbenennen /home/user/newname. Wie kann ich das in einem Terminal machen?

NN
quelle
Verwenden Sie immer mvoder rename.
John Strood

Antworten:

737
mv /home/user/oldname /home/user/newname
Rafał Cieślak
quelle
Cooler Artikel. Genau darum geht es.
Rafał Cieślak
77
Dies funktioniert nicht, wenn der neue Name bereits ein vorhandenes Verzeichnis ist. Stattdessen wird das alte Verzeichnis in das neue verschoben.
Cxrodgers
9
Wenn der Verzeichnisname mit der Großschreibung identisch ist, erhalten Sie No such file or directory. Um dies zu vermeiden, machen Sie so etwas wie mv /home/user/Folder /home/user/temp; mv /home/user/temp/ /home/user/folder.
DutGRIFF
9
@cxrodgers: pass --no-target-directory( -T) , um nicht newnameals Zielverzeichnis behandelt zu werden .
jfs
123

mv kann zwei Jobs erledigen.

  1. Es kann Dateien oder Verzeichnisse verschieben
  2. Es kann Dateien oder Verzeichnisse umbenennen

Um eine Datei oder ein Verzeichnis umzubenennen, geben Sie dies in Terminal ein:

mv old_name new_name 

mit Leerzeichen zwischen den alten und neuen Namen.

Um eine Datei oder ein Verzeichnis zu verschieben, geben Sie dies in Terminal ein.

mv file_name ~/Desktop 

Die Datei wird auf den Desktop verschoben.

Wenn es sich um ein Verzeichnis handelt, das Sie -Rvor dem Verzeichnisnamen hinzufügen sollten :

mv -R directory_name ~/Desktop
shadi
quelle
3
mvunter Ubuntu ist von GNU coreutils. AFAICT es hat keine -ROption, noch ist es notwendig, wenn ein Verzeichnis verschoben wird.
Arielf
-r funktioniert nicht einmal
user1735921
Die richtige Option ist -T. Siehe @ bmaupins Antwort für sein Verhalten.
Chronometrische
39
mv -T /home/user/oldname /home/user/newname

Dadurch wird das Verzeichnis umbenannt, wenn das Ziel nicht existiert oder wenn es existiert, aber leer ist. Andernfalls erhalten Sie einen Fehler.

Wenn Sie dies stattdessen tun:

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

Eines von zwei Dingen wird passieren:

  • Wenn /home/user/newnamenicht vorhanden ist , wird es umbenannt /home/user/oldnamezu/home/user/newname
  • Wenn /home/user/newnamevorhanden ist , wird es bewegen /home/user/oldnamein /home/user/newname, das heißt/home/user/newname/oldname

Quelle: Wie kann man entscheiden, dass mv in ein Verzeichnis verschoben wird, anstatt das Verzeichnis zu ersetzen?

Bmaupin
quelle
Funktioniert nicht, wenn Sie den Verzeichnisnamen in einem Dateisystem ohne Berücksichtigung der Groß- und Kleinschreibung (wahrscheinlich unter MacOS) großschreiben möchten. mv -T $PWD/analisys $PWD/Analisyskehrt zurück mv: '/Users/sixtykeys/Projects/murphy/tmp/analisys' and '/Users/sixtykeys/Projects/murphy/tmp/Analisys' are the same file. Ich habe das umgangen, indem ich einen Zwischennamen (dh analisys_) verwendet habe.
Basilikode
Der Befehl war möglicherweise aufgrund der Einschränkungen des Dateisystems nicht erfolgreich, aber aus einer anderen Perspektive konnte er Ihre Absichten erfolgreich interpretieren (ein Verzeichnis umbenennen, nicht verschieben) :)
bmaupin
hast du das probiert
Mahmoud S. Marwad
5

Wenn Sie ein Verzeichnis auf Ihrer Ebene im Dateisystem umbenennen möchten (z. B. befinden Sie sich in Ihrem Ausgangsverzeichnis und möchten ein Verzeichnis umbenennen, das sich auch in Ihrem Ausgangsverzeichnis befindet):

mv Directory ./NewNameDirectory
Matt P
quelle
4

Dieser gvfs-moveBefehl benennt auch Dateien und Verzeichnisse um.

gvfs-move /home/user/oldname /home/user/newname
Avinash Raj
quelle
3

gvfs-rename benennt auch Verzeichnisse um. Es wird ein Fehler ausgegeben, wenn bereits ein Verzeichnis mit dem neuen Namen existiert. Die einzige Einschränkung ist, dass Sie keinen Pfad mit dem Ordnernamen verwenden können. Damit

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

wird nicht funktionieren, aber

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

wird funktionieren. Nicht so nützlich wie MV-T, aber ich habe in dem Mann gelesen, dass es für den Netzwerkbetrieb gedacht war.

thebunnyrules
quelle