Encontre arquivos com certas extensões

67

Como posso usar findpara encontrar todos os arquivos que têm uma extensão .xlsou .csv? Vi uma -regexopção, mas não sei como usá-la.

Risto Salminen
fonte

Respostas:

115

Por que não simplesmente usar isso:

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

Você não precisa de regex para isso.

Se você absolutamente deseja usar regex, basta usar

find -regex ".*\.\(xls\|csv\)"
Joachim Sauer
fonte
8
Melhor resposta que a minha. +1.
Paul Tomblin
11
Por que uma barra invertida é necessária antes do parêntese? Eu sei que não funciona sem ele, mas parece que deveria.
11
porque são expressões regulares do emacs por padrão. use -regextype para mudar isso.
4
. Apenas para o registro: Eu nunca pode lembrar-se é que ferramentas quer "\ (" para agrupar e que quer "(" Eu sempre tem que tentar conhecê-lo.
Joachim Sauer
11
exemplo regex não funciona
hostmaster
12
find . \( -name  \*.xls -o -name \*.csv \) -print
Paul Tomblin
fonte
Não sabia sobre a opção -o. Obrigado!
11
Precisa de parênteses? encontrar . '(' -name * .xls -o -name * .csv ')' - print
@ Adrian - não, não. Não tenho certeza se ele precisaria ser analisado em uma localização que não seja GNU, onde "-print" já não era a ação padrão.
Paul Tomblin
5
Bem, o GNU find (padrão no ubuntu 11.04) funciona corretamente com parens e -print OU sem (parens e -print). Mas find . -name \*.xls -o -name \*.csv -printapenas saídas arquivos correspondentes .csv,
bbaja42
Você está certo, eu preciso dos parênteses.
Paul Tomblin