Öffnen Sie dazu ein Terminal und führen Sie den folgenden Befehl aus:
mv -v ~/Downloads/* ~/Videos/
Alle Dateien und Ordner werden vom Ordner "Downloads" in den Ordner "Videos" verschoben.
So verschieben Sie alle Dateien, jedoch keine Ordner:
Wenn Sie jedoch alle Dateien (jedoch 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, nicht jedoch aus Unterordnern:
Wenn Sie alle Dateien aus dem Download-Ordner verschieben möchten, jedoch keine Dateien in Ordnern im Download-Ordner, verwenden Sie diesen Befehl:
find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos
Hier gibt die -maxdepth
Option an, wie tief der Suchvorgang ausgeführt werden soll. Dies
1
bedeutet, dass nur das im Befehl find angegebene Verzeichnis verwendet wird. Sie können versuchen 2
, 3
auch zu testen.
Eine ausführliche Erklärung finden Sie in der Ubuntu Find-Manpage .
Lösung
Der Befehl findet alle regulären Dateien unter
/src/dir
(einschließlich aller Unterverzeichnisse) und verschiebt sie/dst/dir
mithilfe des Befehls nachmv
. Ersetzen Sie einfach die Verzeichnisse durch Ihre. Dateien mit demselben Namen werden automatisch umbenannt.Dateien zum Verschieben auswählen
Wenn Sie nur MP3-Dateien verschieben möchten, fügen Sie
-iname "*.mp3"
demfind
Befehl anschließend eine Option hinzu-type f
.Vergleich zur Antwort von c0dev
Nur der zweite Befehl in der Antwort von c0dev beantwortet die Frage. Nachfolgend sehen Sie, wie es mit dieser Antwort verglichen wird. Die Punkte 3. und 4. können in der anderen Antwort auf die gleiche Weise wie hier gelöst werden.
mv
der Lösung mit-exec +
muss kein zusätzlicher Befehl wiexargs
oder aufgerufenparallel
und die Dateinamen zweimal übergeben werden.--backup=numbered
. Leider werden diese Backups mit dem Suffix "Gefällt~3~
mir" in den meisten Dateiverwaltungen standardmäßig ausgeblendet. Leidermv
lässt sich das Suffix nicht ändern, kann aber durch zusätzliche Befehle leicht nachbearbeitet werden. Dies ist eine GNU-Erweiterung.-print0
-exec command {} +
ist dies Teil der Standards IEEE Std 1003.1 (POSIX), ISO / IEC 9945 und The Single UNIX Specification. Somit sollte es portabler sein. Siehe IEEE Std 1003.1, Ausgabe 2004 , IEEE Std 1003.1, Ausgabe 2013 und 0000243: Fügen Sie -print0 zu "find" hinzu . Der erforderliche-t
Switch vonmv
ist jedoch eine GNU-Erweiterung, sodass der gesamte Befehl nicht zwischen POSIX-Systemen portierbar ist.Hinweis: Im Fall der
find
Lage wäre , Wege zu produzieren , beginnend mit-
(ich weiß nicht , von einer solchen Umsetzungfind
im Moment.) Die{}
von der End-of-Optionen Anzeige vorangestellt werden sollte:--
.quelle
{}
muss wohl das letzte Argument sein. KorrigiertLeider habe ich nicht genug Ansehen, um die markierte Lösung zu kommentieren. Ich wollte jedoch andere wegen eines Problems warnen, auf das ich gestoßen bin. Es ist ziemlich amateurhaft; Wenn Sie jedoch mehrere Dinge tun, fällt Ihnen dies zunächst möglicherweise nicht ein. Hoffentlich wird es anderen helfen.
Problem
Nach dem Einleiten des Befehls wurden Variationen der folgenden Nachricht bereitgestellt. Der Befehl erstellt dann mehrere Dateien.
Ursache
Das
/src
ist ein Elternteil von/dst
(zB/src/../dst/
).Lösung
Es gibt zwar eine bessere Lösung, aber ich habe die Dateien einfach in ein temporäres Verzeichnis außerhalb von my
/src
verschoben und dann den Befehl erneut ausgeführt, um sie wieder in dem/src/../dst
Verzeichnis abzulegen, in dem sie landen sollen.quelle
Mein Einzeiler - das funktioniert auf Macs, sollte aber auch auf jedem * nix funktionieren. Starten Sie vom übergeordneten Verzeichnis.
Der erste Teil verschiebt alles von allen Unterordnern in den eigentlichen Ordner, von dem aus Sie den Befehl gestartet haben. Der zweite Teil prüft, ob die Unterverzeichnisse leer sind (sie sollten jetzt :-) und löscht sie, damit Sie hier alles ohne Unterverzeichnisse erhalten.
quelle
-not
Operator nicht dem Standard entspricht, sodass Ihr Befehl weniger portabel ist als die anderen.Öffnen Sie das Terminal, wechseln Sie in Ihren Ordner mit Dateien und führen Sie den Befehl aus
find . -mindepth 2 -type f -print -exec mv {} . \;
, um alle Dateien aus diesen Unterverzeichnissen in das aktuelle zu verschieben.quelle