Warum beinhaltet Grep noch.Und .. In meiner Liste von Dateien, obwohl es nicht mit dem Regex übereinstimmt, gebe ich es?

StackOverflow https://stackoverflow.com//questions/9629843

Frage

Was ich versuche, eine Sammlung aller UNTF16-Unicode-Diagramme zu erhalten.Ich habe alle PDF-Dateien von http://unicode.org/charts/pdf/ heruntergeladen und entschieden zu verwendenPerl, um alle Sonder- oder UTF32-Charts mit dem folgenden Skript zu entfernen: generasacodicetagpre.

Wenn ich das Skript ausführe, erhalte ich die folgende Ausgabe: generasacodicetagpre.

Die ersten 2 Linien sind immer noch generakodicetagcode und . und ich denke, ich denke, weil ich versuche, den generationspflichten, generationspflichten aufzuschalten, sondern eine große Anzahl von Dateien entfernt, die ich nicht entfernen wollte.Ich bin nicht sicher, ob das Problem mit meinen Regexs, .., . oder grep liegt, aber es ist wevor mehr Dateien entfernt als es sollte.

War es hilfreich?

Lösung

This line:

grep {!/^U[0-9,A-F]{4}\.pdf/ && !/utf16only.pl/}

Includes only files that match neither regex. That includes . and ... To exclude those two, you'd have to extend that:

grep {!/^U[0-9,A-F]{4}\.pdf/ && !/utf16only.pl/ && !/^\.{1,2}$/}

Andere Tipps

It's your regex:

grep {!/^U[0-9,A-F]{4}\.pdf/ && !/utf16only.pl/} readdir($dir);

This says "match all files that do not match U[0-9,A-F]{4}.pdf (note - do you really want that comma in there?), and also aren't utf16only.pl.

Since . and .. do not match U[0-9A-F]{4}.pdf and don't match utf16only.pl, they are also deleted.

Add a !/^\./ into your grep to also exclude these files from the deletion list:

grep {!/^U[0-9A-F]{4}\.pdf/ && !/^\./ && !/utf16only.pl/} readdir($dir);

Note - I changed your [0-9,A-F] to [0-9A-F], because I don't think your file names will have commas in them.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top