Ich versuche gerade, find
alle Dateien und Ordnerstrukturen, die einem bestimmten Muster entsprechen, in ein bestimmtes Verzeichnis zu kopieren (und zu kopieren), und ich bin so fast da!
Insbesondere möchte ich rekursiv alle Ordner, die nicht mit einem '_' beginnen, aus einem angegebenen Pfad kopieren.
find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;
In / source / path / with / directory / path befinden sich maschinenspezifische Verzeichnisse, die mit '_' und anderen beginnen, und ich bin nur daran interessiert, die anderen zu kopieren. Aus einem anderen Grund gibt der Befehl find das Verzeichnis / source / path / with / directory / zurück und kopiert daher dessen Inhalt, einschließlich Verzeichnisse, die mit '_' beginnen.
Hat jemand einen Hinweis, warum das so ist?
Vielen Dank,
Pascal
Antworten:
find
Gibt den Stammpfad zurück, da er Ihren Kriterien entspricht, dh es handelt sich um ein Verzeichnis, das nicht mit beginnt_
.Sie suchen
-mindepth 1
, ich vermute:Referenz: Manpage finden
quelle
Wechsel von:
zu:
Dieser Weg
/source/path/with/directories
wird nicht berücksichtigt.Das
shopt -s dotglob
ist so, dass*
auch Dateien und Verzeichnisse übereinstimmen, die mit einem beginnen.
(versteckte Dateien, Verzeichnisse).Und das Ganze wird in eine Sub-Shell eingewickelt
(...)
, um die Wirkungshopt
nur innerhalb der Sub-Shell zu begrenzen , sonst müssten Sie es später mit rückgängig machenshopt -u dotglob
.quelle
.
. Versuchen Sie es auch nicht.*
, sonst passen Sie zu einer ganzen Reihe anderer Dinge, die Sie nie beabsichtigt haben. ;-)shopt
.