Linux mv Befehl erklärt für Anfänger (8 Beispiele)
Genau wie cp zum Kopieren und rm zum Löschen bietet Linux auch einen eingebauten Befehl zum Verschieben und Umbenennen von Dateien. Er heißt mv. In diesem Artikel werden wir die Grundlagen dieses Kommandozeilen-Tools anhand leicht verständlicher Beispiele diskutieren. Bitte beachten Sie, dass alle in diesem Tutorial verwendeten Beispiele auf Ubuntu 22.04 LTS getestet wurden.
Linux mv Befehl
Wie bereits erwähnt, wird der Befehl mv unter Linux verwendet, um Dateien zu verschieben oder umzubenennen. Es folgt die Syntax des Befehls:
mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...
Und hier ist, was die Manualseite darüber sagt:
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Die folgenden Beispiele im Q&A-Stil geben Ihnen eine bessere Vorstellung davon, wie dieses Tool funktioniert.
Q1. Wie kann man den mv-Befehl unter Linux verwenden?
Wenn Sie eine Datei nur umbenennen wollen, können Sie den Befehl mv wie folgt verwenden:
mv [filename] [new_filename]
Zum Beispiel:
mv names.txt fullnames.txt
Wenn die Anforderung darin besteht, eine Datei an einen neuen Speicherort zu verschieben, verwenden Sie den Befehl mv wie folgt:
mv [Dateiname] [dest-dir]
Zum Beispiel:
mv fullnames.txt /home/himanshu/Downloads
Q2. Wie kann man sicherstellen, dass die mv-Prompts vor dem Überschreiben angezeigt werden?
Standardmäßig fordert der Befehl mv nicht an, wenn es darum geht, eine vorhandene Datei zu überschreiben. Der folgende Screenshot zeigt beispielsweise, dass die bestehende full_names.txt ohne Warnung oder Benachrichtigung von mv überschrieben wurde.
Wenn Sie jedoch möchten, können Sie mv zur Eingabeaufforderung zwingen, indem Sie die Befehlszeilenoption -i verwenden.
mv -i [Dateiname] [neuer Dateiname][neuer Dateiname]
Die obigen Screenshots zeigen also deutlich, dass -i dazu führt, dass mv nach Benutzerrechten fragt, bevor eine bestehende Datei überschrieben wird. Bitte beachten Sie, dass Sie die Kommandozeilenoption -f verwenden, wenn Sie explizit angeben möchten, dass mv vor dem Überschreiben nicht aufgefordert wird.
Q3. Wie kann man sicherstellen, dass mv eine bestehende Datei nicht überschreibt?
Dazu müssen Sie die Kommandozeilenoption -n verwenden.
mv -n [filename] [new_filename]
Der folgende Screenshot zeigt, dass der mv-Vorgang nicht erfolgreich war, da eine Datei mit dem Namen’full_names.txt‘ bereits existierte und der Befehl die Option -n hatte.
Hinweis:
If you specify more than one of -i, -f, -n, only the final one takes effect.
Q4. Wie man mv dazu bringt, nachgestellte Schrägstriche (falls vorhanden) aus dem Quellargument zu entfernen?
Um alle nachfolgenden Schrägstriche aus den Quellargumenten zu entfernen, verwenden Sie die Befehlszeilenoption –strip-trailing-slashes.
mv --strip-trailing-slashes [source] [dest]
So erklärt die offizielle Dokumentation den Nutzen dieser Option:
This is useful when a source argument may have a trailing slash and specify a symbolic link to a directory. This scenario is in fact rather common because some shells can automatically append a trailing slash when performing file name completion on such symbolic links. Without this option, mv
, for example, (via the system’s rename function) must interpret a trailing slash as a request to dereference the symbolic link and so must rename the indirectly referenced directory and not the symbolic link. Although it may seem surprising that such behavior be the default, it is required by POSIX and is consistent with other parts of that standard.
Q5. Wie kann man erreichen, dass mv das Ziel als normale Datei behandelt?
Um absolut sicher zu sein, dass die Ziel-Entität wie eine normale Datei (und nicht wie ein Verzeichnis) behandelt wird, verwenden Sie die Befehlszeilenoption -T.
mv -T [source] [dest]
Hier ist, warum diese Kommandozeilenoption existiert:
This can help avoid race conditions in programs that operate in a shared area. For example, when the command ‘mv /tmp/source /tmp/dest’ succeeds, there is no guarantee that /tmp/source was renamed to /tmp/dest: it could have been renamed to/tmp/dest/source instead, if some other process created /tmp/dest as a directory. However, if mv -T /tmp/source /tmp/dest succeeds, there is no question that/tmp/source was renamed to /tmp/dest.
In the opposite situation, where you want the last operand to be treated as a directory and want a diagnostic otherwise, you can use the --target-directory (-t) option.
Q6. Wie macht man mv move file nur, wenn es neuer als die Zieldatei ist?
Angenommen, es gibt eine Datei mit dem Namen fullnames.txt im Download-Verzeichnis Ihres Systems, und es gibt eine Datei mit dem gleichen Namen in Ihrem Heimatverzeichnis. Nun möchtest du ~/Downloads/fullnames.txt mit ~/fullnames.txt aktualisieren, aber nur, wenn letzteres neuer ist. In diesem Fall müssen Sie dann die Kommandozeilenoption -u verwenden.
mv -u ~/fullnames.txt ~/Downloads/fullnames.txt
Diese Option ist besonders nützlich, wenn Sie solche Entscheidungen aus einem Shell-Skript heraus treffen müssen.
Q7. Wie lässt man mv Details darüber ausstrahlen, was es alles tut?
Wenn Sie möchten, dass mv Informationen ausgibt, die erklären, was genau es tut, dann verwenden Sie die Befehlszeilenoption -v.
mv -v [filename] [new_filename]
Die folgenden Screenshots zeigen zum Beispiel, wie mv einige hilfreiche Details darüber aussendet, was genau es getan hat.
Q8. Wie kann man mv zwingen, ein Backup von bestehenden Zieldateien zu erstellen?
Dies kannst du mit der Kommandozeilenoption -b tun. Die so erstellte Sicherungsdatei hat den gleichen Namen wie die Zieldatei, jedoch mit einer Tilde (~) als Anhang. Hier ist ein Beispiel:
Fazit
Wie Sie inzwischen erraten haben, ist mv für die Funktionalität, die es bietet, genauso wichtig wie cp und rm – das Umbenennen und Verschieben von Dateien ist schließlich auch eine der grundlegenden Operationen. Genauso wie auch der Befehl find, um Dateien zu finden. Wir haben über die meisten Befehlszeilenoptionen gesprochen, die dieses Tool bietet. So kannst du sie einfach üben und mit dem Befehl beginnen. Um mehr über mv zu erfahren, gehe zu seiner Man Page.