Ich bin auf dem Weg:
/myuser/downloads/
Und ich erstelle einen Unterordner:
/myuser/downloads/new
Jetzt möchte ich alle Dateien und Ordner / Unterordner im Download-Ordner in den Unterordner verschieben.
Wie kann ich das machen?
Ich habe es versucht:
mv -R *.* new/
Aber bewegen Sie sich nicht den -R-Schalter, wie es scheint.
mv * new
Obwohl, wird es jammern „kann sich auf neue nicht neu bewegen“ oder etwas ähnliches. Vielleichtmv -i * new
verhindern Sie damit ein Überschreiben.Antworten:
Der Befehl
sollte den Trick machen. Wenn es nicht funktioniert, führen Sie
shopt -s extglob
zuerst.Um auch versteckte Dateien / Verzeichnisse (die mit einem Punkt beginnen) zu verschieben, führen Sie ebenfalls
shopt -s dotglob
zuerst aus.Also, um zusammenzufassen:
(Es ist immer besser, die Einstellung
dotglob
zu deaktivieren , um böse Überraschungen zu vermeiden).quelle
!(something)
?dev
ausführen , wenn ich versuche, den Inhalt des Ordners an meinen aktuellen Speicherort zu verschiebenmv !(dev) dev
? Ich bekomme-bash: !: event not found
setopt extendedglob
um den erweiterten Glob-Modus in zsh zu setzen.^
ist das Ausschlusssymbol,mv ^new new
würde also den Trick machen. dann, um alle in zsh festgelegten Optionen anzuzeigensetopt
und den erweiterten Glob-Modus zu deaktivieren, können Sie dies tununsetopt extendedglob
Ich habe so etwas gefunden, aber es ist ein bisschen einfacher zu verstehen, und es könnte auch für Sie gut funktionieren:
Hinzufügen einer Erklärung zu der obigen Lösung:
Aus Manpages:
mv -t
grep -v
Schritt für Schritt erklärt:
ls
listet die Dateien im aktuellen Verzeichnis aufgrep -v new
wird zurückgeleitet, dass nicht neu übereinstimmenxargs mv -t new
Verschiebt die darauf umgeleiteten Dateiengrep -v
in das Zielverzeichnisquelle
mv: illegal option -- t
. Liegt das daran, dass ich benutzezsh
?mv
(was bedeutet, dass Ihre Version von mv anders ist als die, die ich verwendet habe), welches Betriebssystem verwenden Sie? Ich glaube, als ich diese Antwort schrieb, war ich auf Linux Distributioncentos
mitbash
.mv: illegal option -- t
, weil das mv von osx keine-t
Option hat.zsh
, so ist es wahrscheinlich das Betriebssystem dann ..? Danke fürs klarstellen!Einfache Idee. Angenommen, Sie befinden sich in / myuser , benennen Sie die Downloads in new um , erstellen Sie ein neues Download- Verzeichnis und verschieben Sie es in new .
quelle
Wenn Sie alle Dateien aus einem Ordner in einen seiner Unterordner verschieben möchten, können Sie den folgenden Befehl verwenden:
Es findet alle Dateien und verschiebt sie in Ihren Unterordner.
@waltinator: hinzugefügt
-type d -name 'new' -prune
, um das Durchqueren von zu verhindern/myuser/downloads/new
.quelle
new
und diesen Befehl ausprobiert. Ich erhaltemv: missing file operand
undTry 'mv --help' for more information
Sie können diesen alternativen Prozess ausprobieren - im Pfad bleiben
aber, anstatt zuerst das Erstellen von
/myuser/downloads/new/
Verzeichnis, anstatt einen Ordner im erstellen/myuser/
Verzeichnis, mit dem Befehlmkdir ../new
, dann verschieben Sie alle Dateien indownloads
zunew
, und schließlich bewegtnew
indownloads
. Sie können dies in einer Zeile im/myuser/downloads/
Pfad mit dem folgenden Befehl tun :In diesem Fall müssen Sie nicht über jede Art von „Filtern“ von Dateien / Ordnern kümmern, da
new
auf der gleichen Ebene des Pfades ist wiedownloads
, so können Sie einfach alles in Bewegungdownloads
zunew
, und dann bewegennew
in downloads`.Wenn Sie den Unterordner jedoch bereits
new
erstellt haben und keinen weiteren Ordner erstellen möchten, müssen Sie sich keine Sorgen machen. Ändern Sie denmkdir
Befehl links neben dem ersten&&
im obigenmv
Befehl in einen Befehl, und drücken Sienew
die Taste Pfad; in anderen Worten, während Sie noch in sind/myuser/downloads/
, können Sie ändernmkdir ../new
zumv new ..
. Dann wird der Unterordnernew
[im Pfad/myuser/downloads/new/
]/myuser/new/
auf dieselbe Ebene verschoben wie/myuser/downloads/
und Sie können den Rest des Befehls wie oben gezeigt ausführen. Alles in allem haben wir, ausgehend vom Pfad/myuser/downloads/
:und da Sie alle Dateien und Ordner / Unterordner im Download-Ordner in den Unterordner [
new
] verschieben wollten , sind Sie fertig! Wenn Sie nur Dateien (oder nur Ordner oder [Objektverschiebung detaillierter einfügen]) verschieben möchten, müssen Sie andere Befehle verwenden, mit denen Objekte "gefiltert" werden können, zgrep
. Die oben beschriebenen Befehle sind jedoch für Ihre Zwecke ausreichend.quelle