2010-11-22 6 views
0

Angesichts eines Dateinamens wie 'prefix.extension' würde ich gerne alle Dateien des Musters prefix\.\d\d\.extension finden. Da "Präfix" oder "Erweiterung" Literalzeichenfolgen wie .*, \n und dergleichen enthalten kann, ist die einzige Möglichkeit, diese richtig zu finden, das Ausschließen aller Zeichen in 'Präfix' und 'Erweiterung', wobei sie davor und danach platziert werden \.\d\d\. und egrep-es. Gibt es eine elegantere Methode, dies zu tun und/oder eine einfache Möglichkeit, alle Sonderzeichen für in einem Bash-Skript zu umgehen?Dateien sicher finden, die Muster und Literalen entsprechen

Beachten Sie, dass das Setzen eines umgekehrten Schrägstrichs vor jedem Zeichen die Semantik einiger Zeichen wie \w ändert.

+0

nicht sicher, ob ich die Frage verstehe, würden einige Beispiele schön. Wie wäre es mit Bashs Dateinamen globbing wie "ls prefix. *. Extension"? –

+0

wäre nicht globbing so viel einfacher als eine Regex dafür? –

Antwort

0

Es stellt sich heraus grep --perl-regexp mit \Q and \E tut, was ich brauche:

ls -1N -- "${source_dir}" | grep -P "^\Q${source_base}.\E\d\{${fragment_digits}\}\Q.${source_extensions}\E\$" 
Verwandte Themen