web-dev-qa-db-fra.com

Unix find: plusieurs types de fichiers

Je veux exécuter find -name avec plusieurs types de fichiers . 

 find -name *.h,*.cpp

Est-ce possible?

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

Pour trouver cette information dans la page man, tapez man find et recherchez des opérateurs en tapant /OPERATORS et appuyez sur Entrée.

Le . n'est pas strictement nécessaire avec GNU find, mais est nécessaire sous Unix. Les guillemets sont importants dans les deux cas, et leur absence risquerait de provoquer des erreurs si des fichiers de ce type apparaissent dans le répertoire en cours.

Sur certains systèmes (tels que Cygwin), des parenthèses sont nécessaires pour inclure l'ensemble des extensions:

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

C'est ce que j'utilise

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

travaille pour moi.

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

fonctionne pour la recherche de fichiers.

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

fonctionne pour exécuter des commandes sur eux

find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
8
user4795194
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new
0
amritpal singh

C'est ce que j'utilise. Je recommande fortement l'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