GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verschieben Sie eine Datei unter Linux

Das Verschieben von Dateien unter Linux kann relativ unkompliziert erscheinen, aber es stehen mehr Optionen zur Verfügung, als die meisten glauben. Dieser Artikel bringt Anfängern bei, wie man Dateien in der GUI und auf der Befehlszeile verschiebt, erklärt aber auch, was tatsächlich unter der Haube passiert, und spricht Befehlszeilenoptionen an, die viele erfahrene Benutzer selten erforscht haben.

Was verschieben?

Bevor Sie sich mit dem Verschieben von Dateien befassen, lohnt es sich, einen genaueren Blick darauf zu werfen, was beim Verschieben tatsächlich passiert Dateisystemobjekte. Wenn eine Datei erstellt wird, wird sie einem Inode zugewiesen , das ist ein fester Punkt in einem Dateisystem, das zur Datenspeicherung verwendet wird. Mit dem Befehl ls können Sie festlegen, welche Inode einer Datei zugeordnet werden:

$ ls --inode example.txt
7344977 example.txt

Wenn Sie eine Datei verschieben, verschieben Sie die Daten nicht wirklich von einem Inode zum anderen, Sie weisen dem Dateiobjekt nur einen neuen Namen oder Dateipfad zu. Tatsächlich behält eine Datei ihre Berechtigungen, wenn sie verschoben wird, da sie durch das Verschieben einer Datei nicht geändert oder neu erstellt wird.

Datei- und Verzeichnis-Inodes implizieren niemals Vererbung und werden vom Dateisystem selbst diktiert. Die Inode-Zuweisung erfolgt sequentiell basierend darauf, wann die Datei erstellt wurde, und ist völlig unabhängig davon, wie Sie Ihren Computer organisieren. Eine Datei "innerhalb" eines Verzeichnisses kann eine niedrigere oder eine höhere Inode-Nummer als ihr übergeordnetes Verzeichnis haben. Zum Beispiel:

$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt

Beim Verschieben einer Datei von einer Festplatte auf eine andere ändert sich jedoch sehr wahrscheinlich der Inode. Dies geschieht, weil die neuen Daten auf ein neues Dateisystem geschrieben werden müssen. Aus diesem Grund ist das Verschieben und Umbenennen von Dateien unter Linux buchstäblich dieselbe Aktion. Unabhängig davon, ob Sie eine Datei in ein anderes Verzeichnis oder in dasselbe Verzeichnis mit einem neuen Namen verschieben, werden beide Aktionen von demselben zugrunde liegenden Programm ausgeführt.

Dieser Artikel konzentriert sich auf das Verschieben von Dateien von einem Verzeichnis in ein anderes.

Mit der Maus bewegen

Die GUI ist eine benutzerfreundliche und den meisten Menschen vertraute Abstraktionsebene auf einer komplexen Sammlung binärer Daten. Es ist auch die erste und intuitivste Möglichkeit, Dateien unter Linux zu verschieben. Wenn Sie im allgemeinen Sinne an die Desktop-Erfahrung gewöhnt sind, wissen Sie wahrscheinlich bereits, wie Sie Dateien auf Ihrer Festplatte verschieben. Auf dem GNOME-Desktop zum Beispiel ist die Standardaktion beim Ziehen und Ablegen einer Datei von einem Fenster in ein anderes, die Datei zu verschieben, anstatt sie zu kopieren, also ist dies wahrscheinlich eine der intuitivsten Aktionen auf dem Desktop:

Der Dolphin-Dateimanager im KDE-Plasma-Desktop fordert den Benutzer standardmäßig zu einer Aktion auf. Halten Sie die Umschalttaste gedrückt Taste beim Ziehen einer Datei erzwingt eine Verschiebeaktion:

Auf der Befehlszeile bewegen

Das Linux-Terminal

  • Die 7 besten Terminalemulatoren für Linux
  • 10 Befehlszeilentools für die Datenanalyse unter Linux
  • Jetzt herunterladen:SSH-Spickzettel
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Linux-Befehlszeilen-Tutorials

Der Shell-Befehl zum Verschieben von Dateien unter Linux, BSD, Illumos, Solaris und MacOS ist mv . Ein einfacher Befehl mit vorhersagbarer Syntax, mv verschiebt eine Quelldatei an das angegebene Ziel, das jeweils entweder durch einen absoluten oder einen relativen Dateipfad definiert ist. Wie bereits erwähnt, mv ist ein so häufiger Befehl für POSIX-Benutzer, dass viele seiner zusätzlichen Modifikatoren im Allgemeinen unbekannt sind, daher macht dieser Artikel Sie auf einige nützliche Modifikatoren aufmerksam, egal ob Sie neu oder erfahren sind.

Nicht alle mv Befehle wurden jedoch von denselben Leuten geschrieben, also haben Sie möglicherweise GNU mv , BSD mv , oder Sonne mv , abhängig von Ihrem Betriebssystem. Befehlsoptionen unterscheiden sich von Implementierung zu Implementierung (BSD mv hat überhaupt keine langen Optionen), beziehen Sie sich also auf Ihr mv man-Seite, um zu sehen, was unterstützt wird, oder installieren Sie stattdessen Ihre bevorzugte Version (das ist der Luxus von Open Source).

Verschieben einer Datei

Um eine Datei mit mv von einem Ordner in einen anderen zu verschieben , merken Sie sich die Syntax mv . Zum Beispiel, um die Datei example.txt zu verschieben in Ihre Dokumente Verzeichnis:

$ touch example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt

Genau wie beim Verschieben einer Datei per Drag &Drop auf ein Ordnersymbol ersetzt dieser Befehl nicht Dokumente mit beispiel.txt . Stattdessen mv erkennt diese Dokumente ist ein Ordner und platziert die example.txt Datei hinein.

Sie können die Datei beim Verschieben auch bequem umbenennen:

$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt

Das ist wichtig, weil es Ihnen ermöglicht, eine Datei umzubenennen, auch wenn Sie sie nicht an einen anderen Ort verschieben möchten, wie hier:

$ touch example.txt
$ mv example.txt foo2.txt
$ ls
foo2.txt

Ein Verzeichnis verschieben

Das MV Der Befehl unterscheidet eine Datei nicht von einem Verzeichnis wie cp tut. Sie können ein Verzeichnis oder eine Datei mit derselben Syntax verschieben:

$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents

Eine Datei sicher verschieben

Wenn Sie eine Datei in ein Verzeichnis kopieren, in dem bereits eine Datei mit demselben Namen vorhanden ist, wird die Datei mv Der Befehl ersetzt standardmäßig die Zieldatei durch die, die Sie verschieben. Dieses Verhalten wird als Clobbering bezeichnet , und manchmal ist es genau das, was Sie beabsichtigen. In anderen Fällen ist dies nicht der Fall.

Einige Distributionen Alias (oder Sie schreiben Ihr eigenes) mv zu mv --interactive , was Sie zur Bestätigung auffordert. Manche nicht. In beiden Fällen können Sie --interactive verwenden oder -i Option, um sicherzustellen, dass mv fragt nach Bestätigung, falls zwei gleichnamige Dateien in Konflikt stehen:

$ mv --interactive example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'?

Wenn Sie nicht manuell eingreifen möchten, verwenden Sie --no-clobber oder -n stattdessen. Dieses Flag lehnt die Bewegungsaktion im Konfliktfall stillschweigend ab. In diesem Beispiel eine Datei namens example.txt existiert bereits in ~/Documents , sodass es nicht wie angewiesen aus dem aktuellen Verzeichnis verschoben wird:

$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt

Umzug mit Sicherungen

Wenn Sie GNU mv verwenden , gibt es Backup-Optionen, die eine weitere Möglichkeit des sicheren Umzugs bieten. Verwenden Sie zum Erstellen einer Sicherungskopie einer widersprüchlichen Zieldatei das -b Möglichkeit:

$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt    example.txt~

Dieses Flag stellt sicher, dass mv schließt den Verschiebevorgang ab, schützt aber auch alle bereits vorhandenen Dateien am Zielort.

Eine weitere GNU-Backup-Option ist --backup , das ein Argument annimmt, das definiert, wie die Sicherungsdatei benannt wird:

  • vorhanden :Wenn im Ziel bereits nummerierte Sicherungen vorhanden sind, wird eine nummerierte Sicherung erstellt. Ansonsten ist das einfach Schema verwendet wird.
  • keine :Erstellt kein Backup, selbst wenn --backup eingestellt ist. Diese Option ist nützlich, um ein mv zu überschreiben Alias, der die Sicherungsoption festlegt.
  • nummeriert :Fügt der Zieldatei eine Nummer hinzu.
  • einfach :Hängt die Zieldatei mit einem ~ an , die bequem mit --ignore-backups aus Ihrer Tagesansicht ausgeblendet werden können Option für ls .

Zum Beispiel:

$ mv --backup=numbered example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 seth users 128 Aug  1 17:23 example.txt
-rw-rw-r--. 1 seth users 128 Aug  1 17:20 example.txt.~1~

Ein Standard-Backup-Schema kann mit der Umgebungsvariable VERSION_CONTROL festgelegt werden. Sie können Umgebungsvariablen in Ihrer ~/.bashrc festlegen Datei oder dynamisch vor Ihrem Befehl:

$ VERSION_CONTROL=numbered mv --backup example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 seth users 128 Aug  1 17:23 example.txt
-rw-rw-r--. 1 seth users 128 Aug  1 17:20 example.txt.~1~
-rw-rw-r--. 1 seth users 128 Aug  1 17:22 example.txt.~2~

Das --backup Option respektiert immer noch --interactive oder -i Option, sodass Sie immer noch aufgefordert werden, die Zieldatei zu überschreiben, obwohl zuvor eine Sicherungskopie erstellt wird:

$ mv --backup=numbered example.txt ~/Documents
mv: overwrite '~/Documents/example.txt'? y
$ ls ~/Documents
-rw-rw-r--. 1 seth users 128 Aug  1 17:24 example.txt
-rw-rw-r--. 1 seth users 128 Aug  1 17:20 example.txt.~1~
-rw-rw-r--. 1 seth users 128 Aug  1 17:22 example.txt.~2~
-rw-rw-r--. 1 seth users 128 Aug  1 17:23 example.txt.~3~

Sie können -i überschreiben mit --force oder -f Option.

$ mv --backup=numbered --force example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 seth users 128 Aug  1 17:26 example.txt
-rw-rw-r--. 1 seth users 128 Aug  1 17:20 example.txt.~1~
-rw-rw-r--. 1 seth users 128 Aug  1 17:22 example.txt.~2~
-rw-rw-r--. 1 seth users 128 Aug  1 17:24 example.txt.~3~
-rw-rw-r--. 1 seth users 128 Aug  1 17:25 example.txt.~4~

Das --backup Option ist in BSD mv nicht verfügbar .

Viele Dateien gleichzeitig verschieben

Beim Verschieben mehrerer Dateien wird mv behandelt das zuletzt genannte Verzeichnis als Ziel:

$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo   bar   baz

Wenn das letzte Element kein Verzeichnis ist, mv gibt einen Fehler zurück:

$ mv foo bar baz
mv: target 'baz' is not a directory

Die Syntax von GNU mv ist ziemlich flexibel. Wenn Sie die Datei mv nicht bereitstellen können Befehl mit dem Ziel als letztes Argument verwenden Sie das --target-directory oder -t Möglichkeit:

$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo   bar   baz

Dies ist besonders nützlich beim Erstellen von mv Befehle aus der Ausgabe einiger anderer Befehle, wie z. B. find Befehl, xargs , oder GNU Parallel.

Verschieben basierend auf mtime

Mit GNU mv , können Sie eine Verschiebeaktion basierend darauf definieren, ob die zu verschiebende Datei neuer ist als die Zieldatei, die sie ersetzen würde. Diese Option ist mit --update möglich oder -u Option und ist in BSD mv nicht verfügbar :

$ ls -l ~/Documents
-rw-rw-r--. 1 seth users 128 Aug  1 17:32 example.txt
$ ls -l
-rw-rw-r--. 1 seth users 128 Aug  1 17:42 example.txt
$ mv --update example.txt ~/Documents
$ ls -l ~/Documents
-rw-rw-r--. 1 seth users 128 Aug  1 17:42 example.txt
$ ls -l

Dieses Ergebnis basiert ausschließlich auf der Änderungszeit der Dateien, nicht auf einem Unterschied der beiden Dateien, also verwenden Sie es mit Vorsicht. Es ist leicht, mv zu täuschen mit einer bloßen Berührung Befehl:

$ cat example.txt
one
$ cat ~/Documents/example.txt
one
two
$ touch example.txt
$ mv --update example.txt ~/Documents
$ cat ~/Documents/example.txt
one

Natürlich ist dies nicht die intelligenteste verfügbare Update-Funktion, aber sie bietet einen grundlegenden Schutz gegen das Überschreiben aktueller Daten.

Umzug

Es gibt mehr Möglichkeiten zum Verschieben von Daten als nur das mv Befehl, aber als Standardprogramm für den Job mv ist eine gute universelle Option. Da Sie nun wissen, welche Optionen Ihnen zur Verfügung stehen, können Sie mv verwenden intelligenter als je zuvor.


Linux
  1. So verwalten Sie Linux-Dateifunktionen

  2. So finden Sie eine Datei in Linux

  3. So erstellen Sie einen Swap unter Linux

  4. So erstellen Sie eine Auslagerungsdatei unter Linux

  5. So mounten Sie eine ISO-Datei unter Linux

So benennen Sie eine Datei (en) in Linux um

So verknüpfen Sie eine Datei unter Linux per Symlink

So verschlüsseln Sie Dateien unter Linux

So deaktivieren Sie Swap unter Linux

Wie verwende ich gzip unter Linux?

So komprimieren Sie eine Datei unter Linux