find . -name '*.mp3' -o -name '*.jpg' -print
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.
find . -name '*.mp3' -o -name '*.jpg' -print
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.
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
Tags command-line bash find regex