bash escapando e comando find

4

Estou tentando remover o chato \ -escaping deste comando:

find . \( -name '*.mp3' -o -name '*.jpg' \) -print

colocando-o entre aspas simples:

find . '( -name *.mp3 -o -name *.jpg )' -print

sugerindo que os argumentos vão direto para o find sem quaisquer expansões.

No entanto, a saída é diferente.

    
por user52151 21.11.2012 / 12:48

3 respostas

5
find . -name '*.mp3' -o -name '*.jpg' -print
    
por Jim Salter 21.11.2012 / 14:13
6

Você também pode usar expressões regulares, o que, na minha opinião, torna isso mais conciso e oferece melhor controle:

find . -regextype posix-egrep -iregex '.*(pdf|mp3)$'

Isto encontra todos os arquivos (ou diretórios, a menos que você especifique -type f ) que terminam em pdf ou mp3.

    
por Marcin Kaminski 21.11.2012 / 14:46
4
find . '( -name *.mp3 -o -name *.jpg )' -print

Isso procura todos os arquivos nos diretórios denominados . e ( -name *.mp3 -o -name *.jpg ) , o que provavelmente não é o que você pretendia.

Use as aspas simples apenas para os parênteses:

find . '(' -name '*.mp3' -o -name '*.jpg' ')' -print
    
por phoibos 21.11.2012 / 14:22