Je veux exécuter find -name avec plusieurs types de fichiers .
find -name *.h,*.cpp
Est-ce possible?
$ 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' \)
C'est ce que j'utilise
find . \( -name "*.h" -o -name "*.cpp" \) -print
find . -name "*.h" -or -name "*.cpp"
travaille pour moi.
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 "^\."
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new
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)'