Hi Al! On Mo, 10 Mai 2010, Al Bogner wrote:
Am Montag 10 Mai 2010 11:17:09 schrieb Christian Brabandt:
On Mon, May 10, 2010 10:59 am, Thomas Moritz wrote:
Am Montag, 10. Mai 2010 08:18:49 schrieb Christian Brabandt:
On So, 09 Mai 2010, Al Bogner wrote:
Es geht darum, dass Dateien in ein neues Verzeichnis kopiert werden sollen, wenn der Ordner eine bestimmte Zeichenkette enthält und der Dateiname zwischen Anfang und dem ersten "-" einen Punkt enthält und die Endung txt ist.
Beispiel:
/dir1/dir2/dir3/abcdef/dir5/1.2-irgendwas.txt /dir1/dir2//abcd/dir4/03.11nochwas.txt /dir1/dir2/dir3/abcdef/dir5/1-irgendwasanderes.txt
Demnach sollen also die ersten beiden Dateien gefunden werden, wenn nach einem "Directory-Inhalt" mit bc gesucht wird, der 3. darf nicht gefunden werden, da da vor dem "-" kein Punkt ist.
find . -path '*bc*' -iregex '.*/[^./-]*\.[^/-]*-.[^/]*\.txt$'
Das passt aber nicht auf solchen Muell wie: 1.23.-a.a-a.txt 1.23.aaa.aaa-.txt
auf die erste schon. Der 2. matcht nur nicht, weil da in der RE noch ein Bug drin ist. Es müsste also eigentlich heißen:
-iregex '.*/[^./-]*\.[^/-]*-[^/]*\.txt$'
(Man beachte den fehlenden Punkt, der verhinderte, dass auf einen Binde- strich das .txt folgen darf).
Ich habe das gerade mit einem Testverzeichnis probiert, sieht ganz gut aus, hat aber noch einen vernachlässigbaren Fehler, wenn "bc" im Dateinamen vorkommt aber _nicht_ in einem Verzeichnis, dann wird das auch gefunden. In der Praxis ist das vernachlässigbar, aber vielleicht kann man das noch verbessern.
Dann pack explizit den Verzeichnistrenner in -path rein. Also so hier: find . -path '*bc*/*' -iregex … (Sprich, du erzwingst, dass bc innerhalb eines Verzeichnisses matchen muß, weil irgendwann danach noch ein '/' folgen muß.) Mit freundlichen Grüßen Christian -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org