Dies zeigt auch, dass Sie bei der Verwendung von Anführungszeichen keine besonderen Shell-Zeichen ersetzen müssen.
Bearbeiten
Da -orhat eine niedrigere Priorität als der implizierte -andzwischen -typeund der erste -nameName, der in Klammern steht, wie von Chris vorgeschlagen.
Dadurch werden auch Verzeichnisse mit dem Namen "* .css" gedruckt.
Teddy vor 14 Jahren
0
Hmm, die Klammern in deiner aktualisierten Version sind ein bisschen falsch platziert. Die einzelnen Klammern müssen als separate Parameter für * find * enden, sodass sie um sie herum Leerzeichen benötigen (`" * .css "\)`, was zu einem einzelnen String-Wert führt. es ist dasselbe wie (zB) '' * .css) '`). Zweitens müssen die Klammern ganze 'Primaries' durchlaufen (die offene Klammer muss vor '-name' stehen, nicht zwischen ihr und ihrem 'Operanden').
Chris Johnsen vor 14 Jahren
0
14
Dennis Williamson
Hier ist eine Möglichkeit, Ihre erste Version zu erstellen:
find -type f -regex ".*/.*\.\(shtml\|css\)"
8
Teddy
Sie müssen in Klammern stehen, um nur Dateien einzuschließen:
Ich finde oft, dass ich egrep oder längere Pipes oder perl für noch komplexere Filter ende:
find . -type f | egrep '\.(shtml|css)$' find . -type f | perl -lne '/\.shtml|\.css|page\d+\.html$/ and print'
Es ist vielleicht etwas weniger effizient, aber das ist normalerweise kein Problem, und für komplexere Dinge ist es normalerweise einfacher zu konstruieren und zu modifizieren.
Der Standardvorbehalt gilt für die Verwendung von Dateien mit ungewöhnlichen Dateinamen (z. B. Zeilenumbrüche).
+1 Für eine saubere und modulare Lösung treten normalerweise Leistungsengpässe auf, während die aus den Suchergebnissen resultierenden Dateien verarbeitet werden.
Cristik vor 6 Jahren
0