Eu posso obter todas as jpg
imagens usando:
find . -name "*.jpg"
Mas como também posso adicionar png
arquivos aos resultados?
find
regular-expression
wong2
fonte
fonte
find -name
padrão que corresponde a vários padrões no SORespostas:
Use a
-o
bandeira 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 paratype -f
aplicar a todos os argumentos-o
- operador OR lógico-iname
- tipo-name
, mas a correspondência não diferencia maiúsculas de minúsculasfonte
type -f
nã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 \*.png
também funciona ... embora seja dois caracteres mais :-)a * b + c
é diferente dea * (b + c)
Você pode combinar critérios com
-o
como sugerido por Shadur . Observe que a-o
precedência é menor que a justaposição; portanto, você pode precisar de parênteses.No Linux, você pode usar
-regex
para 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 .No FreeBSD, NetBSD e OSX, você pode usar
-regex
combinado com-E
regexps estendidos.fonte
-iname
em vez de-name
- então você também irá capturarimage.JPG
eimage.PnG
Isso é mais correto:
fonte
-iregex
combinajpg
bemJPG Jpg jpG
e 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 é:
Isso ocorre porque a versão do OS X é um pouco diferente, mas é importante escrever coisas que vão bem na maioria das plataformas.
fonte
-type f \( -iname \*.png -o -iname \*.jpg\)
não funciona no OSX?Use-o.
fonte