Encuentra archivos con ciertas extensiones

67

¿Cómo puedo usar findpara encontrar todos los archivos que tienen una extensión .xlso .csv? He visto una -regexopción pero no sé cómo usarla.

Risto Salminen
fuente

Respuestas:

115

¿Por qué no simplemente usar esto?

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

No necesitas expresiones regulares para esto.

Si absolutamente quieres usar regex simplemente usa

find -regex ".*\.\(xls\|csv\)"
Joachim Sauer
fuente
8
Mejor respuesta que la mía. +1.
Paul Tomblin
1
¿Por qué se necesita una barra invertida antes del paréntesis? Sé que no funciona sin él, pero parece que debería.
1
porque son expresiones regulares de emacs por defecto. use -regextype para cambiar eso.
44
Solo para el registro: nunca puedo recordar qué herramientas quieren "\ (" para agrupar y cuáles quieren "(". Siempre tengo que intentarlo para saberlo.
Joachim Sauer,
1
el ejemplo de expresiones regulares no funciona
hostmaster
12
find . \( -name  \*.xls -o -name \*.csv \) -print
Paul Tomblin
fuente
No sabía sobre la opción -o. ¡Gracias!
1
¿Necesita paréntesis? encontrar . '(' -name * .xls -o -name * .csv ')' - print
@ Adrian - no, no lo hace. No estoy seguro de si necesitaría parens en un hallazgo que no sea GNU donde "-print" no era ya la acción predeterminada.
Paul Tomblin
55
Bueno, GNU find (predeterminado en ubuntu 11.04) funciona correctamente tanto con parens como con -print O sin (parens y -print). Pero find . -name \*.xls -o -name \*.csv -printsolo genera archivos que coinciden con .csv,
bbaja42
Tienes razón, necesito a los padres.
Paul Tomblin el