Trouver des fichiers avec certaines extensions

67

Comment puis-je utiliser findpour trouver tous les fichiers ayant une extension .xlsou .csv? J'ai vu une -regexoption mais je ne sais pas comment l'utiliser.

Risto Salminen
la source

Réponses:

115

Pourquoi ne pas simplement utiliser ceci:

find -name "*.xls" -o -name "*.csv"

Vous n'avez pas besoin de regex pour cela.

Si vous voulez absolument utiliser regex, utilisez simplement

find -regex ".*\.\(xls\|csv\)"
Joachim Sauer
la source
8
Mieux vaut répondre que le mien. +1
Paul Tomblin
1
Pourquoi une barre oblique inverse est-elle nécessaire avant la parenthèse? Je sais que ça ne marche pas sans ça, mais il me semble que ça devrait aller.
1
car ce sont des expressions régulières emacs par défaut. utilisez -regextype pour changer cela.
4
Juste pour mémoire: je ne peux jamais me rappeler quels outils veulent "\ (" pour grouper et lesquels "(". Je dois toujours l'essayer pour le savoir. "
Joachim Sauer
1
exemple de regex ne fonctionne pas
hostmaster
12
find . \( -name  \*.xls -o -name \*.csv \) -print
Paul Tomblin
la source
Je ne connaissais pas l'option -o. Merci!
1
A-t-il besoin de parenthèses? trouver . '(' -name * .xls -o -name * .csv ') - estampe
@Adrian - non, ce n'est pas le cas. Je ne sais pas s'il aurait besoin de parens pour une recherche non-GNU où "-print" n'était pas déjà l'action par défaut.
Paul Tomblin
5
Bien, GNU find (par défaut sur Ubuntu 11.04) fonctionne correctement avec les parens et -print OR sans (parens et -print). Mais find . -name \*.xls -o -name \*.csv -printne
génère
Tu as raison, j'ai besoin des parens.
Paul Tomblin