Frage Wie verschiebe ich alle Dateien von einem Ordner zu einem anderen über die Befehlszeile?


Ich würde gerne wissen, wie ich alle Dateien von einem Ordner in einen anderen Ordner mit einer Befehlszeile verschieben könnte.

Nehmen wir an, ich bin in meinem Downloads-Ordner und es gibt 100 Dateien, die ich in meinen Videos-Ordner verschieben möchte, ohne den ganzen Dateinamen zu schreiben.


167
2017-08-06 15:14


Ursprung


Du fragst nach einem Umzug files aber Leute, die dir zeigen, wie man sich nicht nur bewegt files aber foldersauch. Ist das in Ordnung? - Askar


Antworten:


Öffnen Sie ein Terminal und führen Sie diesen Befehl aus:

mv  -v ~/Downloads/* ~/Videos/

Es wird alle Dateien und Ordner aus dem Ordner Downloads in den Ordner Videos verschieben.


So verschieben Sie alle Dateien, jedoch keine Ordner: 

Wenn Sie alle Dateien (aber keine Ordner) vom Ordner "Downloads" in den Ordner "Videos" verschieben möchten, verwenden Sie diesen Befehl

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

So verschieben Sie nur Dateien aus den Download-Ordnern, jedoch nicht aus Unterordnern:

Verwenden Sie diesen Befehl, wenn Sie alle Dateien aus dem Downloads-Ordner aber keine Dateien in Ordnern in dem Download-Ordner verschieben möchten:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

Hier, -maxdepth Option gibt an, wie tief der Fund versuchen soll, 1 bedeutet, nur das Verzeichnis, das im Befehl find angegeben ist. Sie können versuchen, zu verwenden 2, 3 auch zu testen.

Siehe das Ubuntu finden Sie die Manpage für eine detaillierte Erklärung


234
2017-08-06 15:18



Sie können mit mv alleine ein ganzes Verzeichnis in einen anderen Ordner verschieben: mv-Ordner ~ / Dokumente - JohnMerlino
FYI Ich glaube, dein erster Befehl ("mv -v ~ / Downloads / * ~ / Videos /") wird keine Punktdateien verschieben. - Mark Doliner
Ja, die .files werden nicht verschoben - Anwar
Nb. Ihre -print0 | xargs -0 mv -t ~/Videos kann effizienter erledigt werden -exec mv -t ~/Videos \{\} \+ :-) - artfulrobot
ja, das ist wahr. Ich war damals Neuling, als ich die Frage beantwortete - Anwar


mv ~/Downloads/* ~/Videos

Es wird alle Dateien einschließlich der Unterordner in das gewünschte Verzeichnis verschieben mv. Wenn du möchtest cp (kopieren) oder rm (entfernen) Du wirst das brauchen -r (rekursive) Option zum Einbinden von Unterordnern.


17
2017-12-08 03:24



Mein mv-Befehl hat keine Option -R (Ubuntu 14.04). - Mark Doliner
@ MarkDoliner, ja, mv benötigt keine rekursive Option, um Unterordner einzubeziehen. Man kann es auch zum Umbenennen verwenden. - AliNâ
Ich brauchte * nicht. Dasselbe passierte, ohne den Stern zu benutzen. - MycrofD
Das ~ / im Präfix der Ordnernamen funktioniert nicht immer (funktioniert nicht bei bash und git atleast) - Krish Munot
Diese Lösung gibt einen Fehler, wenn das Quellverzeichnis leer ist. - Pierre Thibault


Es ist möglich mit rsync, beispielsweise:

rsync -vau --remove-source-files src/ dst/

woher:

-v, --verbose: Erhöhen Sie die Ausführlichkeit.

-a, --archive: Archivierungsmodus; ist gleich -rlptgoD (Nein -H, -A, -X).

-u, --update: Überspringe Dateien, die neuer auf dem Empfänger sind.

--remove-source-files        Dies veranlasst rsync, die Dateien (dh Nicht-Verzeichnisse), die Teil der Übertragung sind und auf der Empfangsseite erfolgreich dupliziert wurden, von der Sendeseite zu entfernen.

Wenn Sie root-Berechtigungen haben, setzen Sie mit sudo um mögliche Berechtigungsprobleme zu umgehen.


5
2018-06-06 15:08



WARNUNG! Die Option --delete-after funktioniert nicht wie erwartet. Es löscht nicht die Quelle Dateien nach erfolgreichem Kopieren ... IT löscht alle verbleibenden / anderen Dateien im Ziel. (wie @kenorb bemerkt ... aber ich habe nicht sorgfältig genug gelesen! DOH) - Jay Marm


Benutzen

mv -v ~/rootfolder/branch/* ~/rootfolder

Ich hoffe das hilft. Weil ich den gleichen Schmerz hatte und viel Zeit damit verschwendet hatte, meinen Fehler zu beheben.


2
2018-01-25 23:06





Für den einfachen Fall:

mv ~/Downloads/* ~/Videos

Wenn Sie auch Punktdateien verschieben möchten, legen Sie die Option fest dotglob Shell-Option.

shopt -s dotglob
mv ~/Downloads/* ~/Videos

Dadurch bleibt die Shell-Option aktiviert.

Führen Sie die Befehle in einer Subshell einmal für dotglob aus:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

2
2018-01-22 10:16





  1. Gehe zur Befehlszeile und gehe in das Verzeichnis, in das du es verschieben willst cd folderNamehere
  2. Art pwd. Dadurch wird das Verzeichnis gedruckt, in das Sie es auch verschieben möchten.
  3. Wechseln Sie dann in das Verzeichnis, in dem alle Dateien enthalten sind cd folderNamehere
  4. Jetzt verschieben Sie alle Dateitypen mv *.* typeAnswerFromStep2here

Dadurch werden alle Dateien aus diesem Verzeichnis in das andere verschoben.


1
2017-09-12 12:07



Dies stimmt nicht mit Dateien ohne Erweiterung überein. Zum Beispiel, wenn ein Ordner die Dateien enthält: foo.txt, bar. und bar beide bar. und bar wird nicht bewegt. Verwenden * Anstatt von *.* kümmert sich darum. Aber in beiden Fällen, versteckte Dateien wie: .foobar wird nicht bewegt. - Dan


Um ein Verzeichnis mit oder ohne Inhalt auf den neuen Namen zu verschieben, so wie Sie es verwenden würden mv Befehl zum Umbenennen einer Datei:

mv -T dir1 dir2

woher:

  • -T behandelt das Ziel als normale Datei
  • dir1 ist der ursprüngliche Name des Verzeichnisses
  • dir2 ist der neue Name des Verzeichnisses

NB: dir2 muss nicht existieren.

Ich hoffe, dass dies jemand viel Zeit spart, als ein Noob, vorher würde ich ein Verzeichnis mit dem neuen Namen erstellen und dann den Inhalt des Verzeichnisses in das zuvor erstellte Verzeichnis verschieben.

Verwenden Sie für Unterverzeichnisse

Dieser Befehl ist nützlich, wenn viele Dateien in einem Unterordner des Zielverzeichnisses gespeichert wurden, z. Downloads/mp4. In diesem Beispiel läuft mv -T Downloads/mp4 Videos wird darin enden, dass mp4 Unterordner sein entfernt und alle darin enthaltenen Dateien werden in den Ordner "Videos" verschoben.


0
2017-12-09 07:33



+1, weil getestet in Xubuntu arbeiten 14.04. Ich habe ein Beispiel in dieser Antwort hinzugefügt, um zu zeigen, dass dieser Befehl das verursacht dir1 entfernt werden. Abgesehen von dieser Vorsichtsmaßnahme hat diese Antwort etwas Gutes für den täglichen Gebrauch festgestellt. - clearkimura
"So verschieben Sie ein Verzeichnis mit oder ohne Inhalt auf den neuen Namen" Wie können Sie ein Verzeichnis ... in einen Namen verschieben? Das macht keinen Sinn. "-T behandelt das Ziel als normale Datei" Wie kann ein Ziel eine Datei sein? Meinst du Verzeichnis? - Monica Heddneck
Es ist so, als würde man eine Datei in ihren neuen Namen umbenennen, so wie man es mit etwas Ähnlichem machen würde mv fileA fileB aber die -T flag behandelt in diesem Fall das Zielverzeichnis als Datei und benennt es um. - Feyisayo Sonubi


Versuch es

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-Art Mit dem Argument -typ können Sie den Typ file.on angeben, der die mittlere Datei darstellt. Bei Verwendung von -d bedeutet dies Verzeichnis.

-iname: Die gebräuchlichste und offensichtlichste Methode, nach einer Datei zu suchen, ist das Argument -name. Wenn Sie sich nicht sicher sind, ob die Groß- / Kleinschreibung beachtet werden soll, können Sie das Argument -iname verwenden

mv {} und schließlich das Zielverzeichnis anzugeben und dann die Dateien mit dem Argument mv {} dorthin zu verschieben


0
2018-04-01 16:54