it-swarm.com.de

Unix-Suche: mehrere Dateitypen

Ich möchte find -name mit mehreren Dateitypen ausführen. 

 find -name *.h,*.cpp

Ist das möglich?

53
Jacko
$ find . -name '*.h' -o -name '*.cpp'

Um diese Informationen auf der Seite man zu finden, geben Sie man find und die Suche nach Operatoren ein, indem Sie /OPERATORS eingeben und die Eingabetaste drücken.

Der . ist bei GNU find nicht unbedingt erforderlich, aber bei Unix erforderlich. Die Anführungszeichen sind in beiden Fällen wichtig. Wenn Sie sie weglassen, werden Fehler ausgegeben, wenn Dateien dieses Typs im aktuellen Verzeichnis angezeigt werden.

Auf einigen Systemen (wie Cygwin) sind Klammern erforderlich, um die Erweiterungen zu berücksichtigen:

$ find . \( -name '*.h' -o -name '*.cpp' \)
80
Eric Wilson

Das ist was ich benutze

find . \( -name "*.h" -o -name "*.cpp" \) -print
18
Pierre Lacave
find . -name "*.h" -or -name "*.cpp"

funktioniert bei mir.

9
jham
find . -name '*.h' -o -name '*.cc'`

arbeitet für die Suche nach Dateien.

find . \( -name '*.h' -o -name '*.cc' \)`

funktioniert zum Ausführen von Befehlen auf ihnen

find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
8
user4795194

Sie können auch das Dienstprogramm -regex Verwenden:

find -E . -iregex ".*\.(js|jsx|html|htm)"

Denken Sie daran, dass der reguläre Ausdruck den vollständigen absoluten Pfad betrachtet:

Eine Erklärung für diesen regulären Ausdruck mit Testfällen finden Sie unter: https://regex101.com/r/oY1vL2/1

-E (Als Flag VOR dem Pfad) ermöglicht erweiterte (moderne) reguläre Ausdrücke.

Dies ist für BSD find (Mac OSX 10.10.5)

5
Evan
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new
0
amritpal singh

Ich verwende das Argument "-regextype posix-extended".

find . -type f -iname "*.log" -o -iname "*.gz" 
find . -type f \( -name "*.gz" -o -name "*.log" \)
find . -type f -regex '.*\(\.gz\|\.log\)'
find . -type f -regextype posix-extended -regex '.*.(log|gz)'
0
xoyabc