Respostas:
Use a -obandeira entre diferentes parâmetros.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \) Funciona como um encanto.
NOTA Não deve haver um espaço entre o suporte e seu conteúdo ou não vai funcionar.
Explicação:
type -f - procure apenas arquivos (não diretórios)\(- necessário para type -faplicar a todos os argumentos-o - operador OR lógico-iname- tipo -name, mas a correspondência não diferencia maiúsculas de minúsculastype -fnão se estende e se aplicam a ambas as expressões sem os parênteses, assim, find ./ -type f -iname \*.jpg -o -type f -iname \*.pngtambém funciona ... embora seja dois caracteres mais :-)
a * b + cé diferente dea * (b + c)
Você pode combinar critérios com -ocomo sugerido por Shadur . Observe que a -oprecedência é menor que a justaposição; portanto, você pode precisar de parênteses.
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( '*.jpg' -o -name '*.png' \) # all .jpg or .png images modified in the past week
No Linux, você pode usar -regexpara combinar extensões de uma maneira terser. A sintaxe padrão do regexp é o Emacs ( regexps básicos mais algumas extensões, como \|por alternância); existe uma opção para mudar para regexps estendidos .
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
No FreeBSD, NetBSD e OSX, você pode usar -regexcombinado com -Eregexps estendidos.
find -E . -regex '.*\.(jpg|png)'
-inameem vez de -name- então você também irá capturar image.JPGeimage.PnG
Isso é mais correto:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregexcombina jpgbem JPG Jpg jpGe tal. Eu acho que $não é necessário.
find -E . -iregex '.*\.(jpg|png|gif)'como mostrado na resposta de @ sorin.
Para deixar claro, a única opção que funciona no Linux, Unix e macOS é:
find -E . -regex '.*\.(jpg|png)'
Isso ocorre porque a versão do OS X é um pouco diferente, mas é importante escrever coisas que vão bem na maioria das plataformas.
-type f \( -iname \*.png -o -iname \*.jpg\)não funciona no OSX?
find -namepadrão que corresponde a vários padrões no SO