wie 'find' das aktuelle Verzeichnis nicht zurückgeben soll


11

Ich versuche gerade, findalle 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:


14

findGibt 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:

$ cd /tmp
$ mkdir a
$ touch a/b
$ mkdir a/c
$ touch a/c/d
$ find a
a
a/b
a/c
a/c/d
$ find a -mindepth 1
a/b
a/c
a/c/d

Referenz: Manpage finden


Ausgezeichnet! funktioniert wie ich wollte. Ich habe es durch Hinzufügen funktionieren lassen! -name 'Dateien', aber es fühlte sich für mich falsch an ...
Pinpin

0

Wechsel von:

find /source/path/with/directories ...

zu:

(shopt -s dotglob; find /source/path/with/directories/* ... )

Dieser Weg /source/path/with/directorieswird nicht berücksichtigt.

Das shopt -s dotglobist 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 Wirkung shoptnur innerhalb der Sub-Shell zu begrenzen , sonst müssten Sie es später mit rückgängig machen shopt -u dotglob.


Dies schlägt bei Verzeichniseinträgen fehl, die mit beginnen .. Versuchen Sie es auch nicht .*, sonst passen Sie zu einer ganzen Reihe anderer Dinge, die Sie nie beabsichtigt haben. ;-)
Zigg

Guter Punkt, aktualisierte die Antwort, fügte hinzu mit shopt.
Janos
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.