Linux-Praxisbuch/ mv
Der Konsolen Befehl mv - move - Verschieben und Umbenennen von Dateien
Allgemeines
BearbeitenDer Befehl mv (move) verschiebt Dateien an eine andere Stelle. Er dient auch zum Umbenennen von Dateien.
Im Gegensatz zum Copy Befehl cp findet hier idR im Dateisystem nur eine Änderung des Verzeichniseintrags statt solange man nicht auf eine andere Datenträgerpartition verschiebt, so dass dieser Befehl oft sehr schnell ausgeführt ist. Die Datei ist unter dem alten Namen bzw. am alten Platz nach einem mv nicht mehr zu finden.
Eine Datei
BearbeitenAm schnellsten versteht man den Gebrauch von mv, wenn man nur eine Datei verschiebt oder umbenennt. Wenn nur eine einzige Datei angegeben wird, kann diese beim Verschieben auch einen neuen Namen erhalten.
mv 1.txt 2.txt
Die Datei 1.txt wird in 2.txt umbenannt.
Mehrere Dateien
BearbeitenBei mehreren Dateien muss man aufpassen, dass man alles korrekt angibt und keine Dateien überschreibt. Als Joker dient wie üblich das Sternchen *.
VORSICHT: Das funktioniert nicht: mv *.txt *.bak
- Um so etwas zu machen braucht man einen Einzeiler
for i in *.txt; do mv $i $i.bak; done
was zumindest aus allen .txt eine .txt.bak macht.
Bitte erst überprüfen
BearbeitenErzeugen Sie drei Dateien
touch 1.t touch 2.t touch 3.t
Dann lassen Sie folgenden Einzeiler ablaufen
for i in *.t; do mv $i ${i%.*}.b; done
Überprüfen Sie das Ergebnis mit:
ls -la *.b
Ausgabe:
1.b 2.b 3.b
Alte Dateien nachschauen:
ls -la *.t
Ausgabe: Keine mehr gefunden:
/bin/ls: *.t: Datei oder Verzeichnis nicht gefunden
Beispiele
BearbeitenEine Datei umbenennen
Bearbeitenmv test.txt test1.txt
Erstellen Sie eine Datei namens test.txt. Das geht beispielsweise mit dem Befehl touch test.txt oder cat > test.txt. Dann können Sie das Beispiel ausprobieren. Überprüfen Sie den Erfolg ihrer Arbeit mit dem Befehl
ls -la tes*
Die Datei test.txt ist nicht mehr zu finden. Dafür findet sich jetzt dieselbe Datei unter dem Namen test1.txt.
Eine Datei in ein neues Verzeichnis verschieben und den Namen beibehalten
Bearbeitenmv test.txt /test.txt
Da Sie wahrscheinlich für das oberste Verzeichnis Ihres Rechners keine Zugriffsberechtigung haben, erhalten Sie folgende Fehlermeldung:
mv: reguläre Datei ,,/test.txt" kann nicht angelegt werden: Keine Berechtigung
Für die erforderlichen Root-Rechte wird deswegen noch das Kommando sudo vorangestellt:
sudo mv test.txt /test.txt
Oder Sie legen erst ein anderes Verzeichnis an, in welches Sie ihre Datei kopieren:
mkdir t mv test.txt ~/t/test.txt
Die Schlangenlinie ~ steht dabei für den Namen ihres Homeverzeichnisses. Dann steht die Datei im Unterverzeichnis t ihres ursprünglichen Verzeichnisses Überprüfen Sie dies mit
cd t ls -la tes*
Mehrere Dateien in ein neues Verzeichnis verschieben
BearbeitenInformationen und Fehlermeldungen des Befehls mv
BearbeitenNormalerweise gibt der Befehl mv keine Meldung oder Fehlermeldung aus. Sie sollten deswegen den Befehl mv immer mit dem Parameter -v (verbose - wortreich) nutzen. So erhalten Sie von jedem Verschiebevorgang eine Meldung und können verfolgen, was Ihr Computer getan hat.
mv -v 1.txt 2.txt
Meldung:
Datei umbenannt '1.txt' -> '2.txt'
Existiert die Datei gar nicht, die Sie umbenennen wollen, bekommen Sie folgende Fehlermeldung:
mv: Aufruf von stat für name nicht möglich: Datei oder Verzeichnis nicht gefunden
Wenn das Zielverzeichnis wegen fehlender Zugriffsberechtigung nicht angelegt werden kann gibt es folgende Meldung:
mv: reguläre Datei kann nicht angelegt werden: Keine Berechtigung
Liegt im Ziel-Directory bereits eine Datei mit gleichem Namen, wird beim Aufruf eine Warnung ausgegeben:
mv -i datei verzeichnis
Meldung
mv: »verzeichnis/datei« überschreiben?
Optionen
Bearbeitenbackup
Bearbeiten- --backup[=KONTROLLE] vor Entfernen Sicherung anlegen
- -b wie --backup, akzeptiert aber keine Argumente
- Erzeugt Backup-Dateien, falls im Zielverzeichnis bereits gleichnamige Dateien existieren.
interactive nachfragen
Bearbeiten- -i, --interactive vor Überschreiben nachfragen (äquivalent zu --reply=query)
- --reply={yes,no,query} Nachfrage bei existierender Zieldatei: immer ja,immer nein, nachfragen
- -f, --force vor Überschreiben nicht nachfragen (äquivalent zu --reply=yes)
- -n, --no-clobber nicht überschreiben
update
Bearbeiten- -u, --update nur neuere oder brandneue Dateien verschieben
- Die update Option verhindert ein Überschreiben, falls im Zielverzeichnis eine aktuellere Datei existiert
verbose Meldung ausgeben
Bearbeiten-v, --verbose Erklärung über Abläufe ausgeben
help
Bearbeiten--help diese Hilfe anzeigen und beenden
andere
Bearbeiten- --strip-trailing-slashes Schrägstriche vom Ende jedes QUELLE-Arguments entfernen
- -S, --suffix=SUFFIX die normale Sicherungs-Erweiterung überschreiben
- --target-directory=VERZ alle Quellen in Verzeichnis VERZ verschieben
- --version Versionsinformation anzeigen und beenden
Syntax
BearbeitenAufruf:
mv [OPTION]... QUELLE ZIEL
Beispiel
mv AlteDatei NeueDatei
oder:
mv [OPTION]... QUELLE... VERZEICHNIS
oder:
mv [OPTION]... --target-directory=VERZEICHNIS QUELLE...
Umbenennen von QUELLE in ZIEL, oder QUELLE(en) in VERZEICHNIS verschieben
Siehe auch
BearbeitenAlternativen
Bearbeiten- Alternativ arbeitet man mit dem Konqueror unter KDE
- Oder man arbeitet mit dem Midnight Commander auf der Konsole
- Zum Umbenennen und Kopieren gibt es auch den Befehl Copy = cp
- rsync
Hilfe
BearbeitenHilfe zum Befehl mv bekommen Sie auf Ihrer Konsole mit:
mv --help
oder
mv --help| less
oder
man mv
Fragen
BearbeitenWarum funktioniert mv *.txt *.bak nicht?
Wenn man schnell ein paar Dateien eine neue Endung verpassen will, wäre move eigentlich ganz hilfreich. Es funktioniert aber nicht wie gewünscht.
Beispiel
Bearbeitentouch text1.txt text2.txt
Es werden 2 Dateien mit derselben Endung erstellt. Dann versucht man: mv *.txt *.bak Mit ls schaut man nach, ob es geklappt hat: Leider nicht Ausgabe
text2.txt
Um mehrere Dateien umzubenennen gibt es den Befehl rename. Dabei wird von in allen angegebenen Dateinamen durch nach ersetzt. Also z. B.
ls text1.txt text2.txt rename .txt .bak *.txt ls
Ausgabe
text1.bak text2.bak rename .bak .txt.bak *.bak
ls
text1.txt.bak text2.txt.bak