Linux / Befehl mv: Dateien und Verzeichnisse verschieben und umbenennen
mv verschiebt Dateien und Verzeichnisse oder benennt sie um. Innerhalb eines Dateisystems erfolgt dies normalerweise als Umbenennung, während eine Verschiebung zwischen Dateisystemen Kopieren und anschließendes Entfernen der Quelle erfordern kann. Prüfen Sie vorhandene Ziele vor dem Überschreiben.
Die Beispiele verwenden das Verhalten von GNU Coreutils. Prüfen Sie mv --help, man mv und die Dokumentation Ihrer Distribution, wenn Portabilität oder eine versionsspezifische Option wichtig ist.
Ergänzende Befehle und Anwendungsfälle finden Sie in Wesentliche Linux-Befehle: Eine praktische Referenz nach Aufgaben.
Was ist der Befehl mv?
mv verschiebt oder benennt Dateien und Verzeichnisse um. Innerhalb eines Dateisystems erfolgt dies normalerweise als schnelle Umbenennung. Über Dateisystemgrenzen hinweg kann GNU mv die Daten kopieren und die Quelle nach erfolgreichem Kopieren entfernen, sodass der Vorgang viel länger dauern kann und teilweise über eine Liste von Operanden unvollständig sein kann.
Grundlegende Syntax
mv [OPTION]... [-T] SOURCE DESTINATION mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...
Setzen Sie Anführungszeichen um Pfade, die Leerzeichen enthalten. Wenn unterstützt, setzen Sie -- vor Operanden, die mit einem Bindestrich beginnen, damit sie nicht als Optionen interpretiert werden.
Grundlegende mv-Nutzung
Eine Datei umbenennen
Geben Sie den aktuellen Pfad und den neuen Pfad im selben Verzeichnis an.
mv draft.txt final.txt
Verschieben Sie eine Datei in ein Verzeichnis
Wenn das Ziel ein vorhandenes Verzeichnis ist, bleibt der ursprüngliche Basisname darin erhalten.
mv report.pdf archive/
Verschieben mehrerer Dateien
Wenn mehrere Quellen angegeben werden, muss das letzte Argument ein Zielverzeichnis sein.
mv *.log old-logs/ mv -t old-logs app.log access.log error.log
Überprüfung der Ergebnisse des Verschiebens oder Umbenennens
Wenn mv erfolgreich ist, erzeugt es in der Regel keine Ausgabe. Nach dem Umbenennen können Sie überprüfen, ob der ursprüngliche Pfad verschwunden ist und ein neuer Pfad erstellt wurde.
printf 'demo\n' > before.txt mv before.txt after.txt test -f after.txt && test ! -e before.txt echo $?
Eine Beispielausgabe von 0 bedeutet, dass beide Bedingungen wahr sind. Beim Verschieben in ein anderes Dateisystem kann es intern Dateien kopieren und löschen, daher sollten bei großen Operationen auch die Größe und der Inhalt der resultierenden Dateien überprüft werden.
Wichtige Optionen
| Option | Zweck |
|---|---|
-i |
Vor dem Überschreiben nachfragen. |
-n |
Eine bestehende Zielposition nicht überschreiben. |
-f |
Ersatz ohne Aufforderung versuchen. |
-u |
Entsprechend den Aktualisierungsbedingungen verschieben. |
-v |
Verarbeitete Pfade melden. |
-b |
Eine bestehende Zielposition vor dem Ersetzen sichern. |
-T |
Das Ziel als exakten Pfad behandeln. |
-t DIR |
Geben Sie das Zielverzeichnis vor den Quellen an. |
Lange Optionen machen überprüfte Skripte oft leichter verständlich. Wenn ein Skript auf Nicht-GNU-Systemen laufen muss, überprüfen Sie jede nicht-POSIX-Option auf der Zielplattform.
Praktische Beispiele
Bestätigen Sie oder sichern Sie Ersetzungen
Interaktive Verschiebungen können -i verwenden. Verwenden Sie -n, wenn eine Ersetzung verboten ist, oder -b, wenn das vorherige Ziel beibehalten werden soll.
mv -iv new.conf /etc/myapp/config.conf mv -bv new.conf /etc/myapp/config.conf
Machen Sie das Ziel eindeutig
Ein unerwartet vorhandenes Verzeichnis kann ändern, wo eine Quelle platziert wird. -T behandelt das Ziel als den exakten Pfad, während -t ein Zielverzeichnis klar kennzeichnet.
mv -T staging current mv -t archive -- file1 file2
Planen Sie eine Verschiebung zwischen Dateisystemen
Das Verschieben eines großen Elements auf ein anderes eingehängtes Dateisystem erfordert echtes Kopieren und genügend freien Speicherplatz. Überprüfen Sie das Ziel und behandeln Sie Unterbrechungen, bevor Sie eine manuell aufbewahrte Quellkopie löschen.
df -h source-dir destination-dir mv -v large-image.raw /mnt/archive/
mv und verwandte Befehle
| Befehl oder Methode | Hauptrolle | Geeignet für |
|---|---|---|
mv |
Verschieben oder umbenennen | Der Quellpfad sollte verschwinden |
cp |
Erstellen Sie eine unabhängige Kopie | Sowohl Quelle als auch Kopie sollten erhalten bleiben |
rename |
Regelbasierte Stapelumbenennung | Viele Dateien mit einer bekannten Implementierung umbenennen |
rsync --remove-source-files |
Dateien übertragen und Quellen entfernen | Kontrollierte große oder entfernte Verschiebungen |
Wichtige Hinweise
Verschieben bietet keine automatische Wiederherstellung
Das Überschreiben eines Ziels kann dessen vorherigen Inhalt ohne einen Eintrag im Desktop-Papierkorb zerstören. Verwenden Sie Bestätigung, kein-Überschreiben-Verhalten oder Sicherungen für wichtige Pfade.
Verschiebungen zwischen Dateisystemen können teilweise erfolgreich sein
Bei einer Verschiebung mehrerer Elemente können frühere Kopien vor einem späteren Fehler abgeschlossen werden. Überprüfen Sie nach einem Fehler sowohl die Quelle als auch das Ziel.
Vermeiden Sie einen abschließenden Schrägstrich bei einem Verzeichnis-Symlink-Quellpfad
Systeme können darin unterscheiden, wie ein Symlink-zu-Verzeichnis mit abschließendem Schrägstrich behandelt wird. Verwenden Sie einen eindeutigen Pfad, wenn der Link selbst verschoben werden soll.
FAQ
Kopiert mv Daten innerhalb desselben Dateisystems?
Normalerweise erfolgt eine schnelle Umbenennung. Das Überschreiten einer Dateisystemgrenze kann das Kopieren und Entfernen der Quelle erfordern.
Wie vermeide ich das Überschreiben eines Ziels?
Verwenden Sie mv -n SOURCE DESTINATION oder -i für eine Aufforderung.
Sind Umbenennen und Verschieben unterschiedliche Befehle?
Beide verwenden mv SOURCE DESTINATION; der Typ und Speicherort des Ziels bestimmen das Ergebnis.
Wie kann ich viele Dateien eindeutig in ein Verzeichnis verschieben?
Verwenden Sie mv -t DIRECTORY -- FILE....
Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Coreutils mv Dokumentation und GNU Coreutils-Handbuch.




