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.