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).
Meine "boese" grep-Line fuer den Filenamen saehe daher folgendermassen aus:
grep "\.\{1,\}[a-zäöüßA-ZÄÖÜ0-9 ]\{1,\}-[a-zäöüßA-ZÄÖÜ0-9 -]\{1,\}*\.[Tt][Xx][Tt]"
Die sollte fast alles fressen inkl. Spaces.
Ich würde eher mit Negierung arbeiten und \.\{1,\} könnte man auch zu \.\.* vereinfachen (analog könnte man das mit den anderen auch machen, dort sieht das dann aber komplizierter aus). Grüße, 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