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.

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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.