Ich habe einen Ordner , A
die Dateien und Verzeichnisse hat, möchte ich alle diese Dateien und Verzeichnisse in einem anderen Ordner verschieben B
, mit der Ausnahme file
, file2
, directory
, und directory2
.
Wie kann das gemacht werden?
command-line
files
directory
move
etwas etwas
quelle
quelle
was ich normalerweise mache
(vorausgesetzt, Sie haben keine 'a'-Datei).
Entfernen Sie alle Dateien oder Verzeichnisse, die an Ort und Stelle bleiben sollen.
quelle
-
. Sie können keine Dateinamen erkennen, die Zeilenumbrüche enthalten, und versteckte Dateien werden weggelassen.ls
es sich um einen Alias für handeltls -F
(was häufig der Fall ist, wenn keine Farben verwendet werden), können Quellpfade führen/
, was schwerwiegende Nebenwirkungen haben kann - siehe "Warnung" und "Nachgestellte Schrägstriche" ininfo mv
(oderpinfo mv
) aber nicht inman mv
)Sie können
find
mit ausgeschlossenen Ausdrücken verwenden:Diese Lösung ist von dieser Frage inspiriert .
quelle
-E
Option fallen lassen. Es kann jedoch Unterschiede zwischen unseren Systemen geben, da ich derzeit unter OSX arbeite.quelle
Wenn
./A
und./B
sich auf demselben Dateisystem befinden und wenn diese Dateien noch nicht vorhanden sind in./B
:... dann sollte diese Operation nur atomar sein:
Ist dies nicht der Fall, werden mindestens 8 zusätzliche geräteübergreifende Kopien mit den oben genannten Befehlen erstellt.
quelle
mv
unlinks
undrenames
wenn man keine Entwickler kreuzt, betrifft das im Grunde nur die Dentries, so wie ich es verstehe. Aber die Shell kommt nicht darauf an.$ sudo mv (Name des Quellordners) AB (Name des Zielordners)
Beispiel: Erstellen Sie ein leeres Verzeichnis in einem Unterordner. a 1) sudo mkdir -p A / {b / {a, b, c}, c, d}
2) ls A /
bcd
3) sudo mkdir B.
5) sudo mv a (Ordner) b (Ordner)
quelle
Sie können ein Bash-Array verwenden, um zu speichern, welche Sie überspringen möchten, und dann die hier gezeigte
containsElement
Funktion verwenden :quelle