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.

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\)"

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.