Eu li a página de manual e outras referências, mas ainda estou confuso com o comportamento de encontrar com a -print0
opção.
-print0 This primary always evaluates to true. It prints the pathname of
the current file to standard output, followed by an ASCII NUL
character (character code 0).
Primeiro comando:
$ find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" 2> /dev/null
/some/path//asdf199Intro-5kqlw.jpeg
/some/path/199intro-2jjaj.JPEG
/some/path/199intro-3.jpg
/some/path/wuer199intro-4.JPG
/some/path/xbzf199INTRO-1.jpg
Segundo comando:
$ find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" 2> /dev/null -print0
/some/path/136intro-3.jpg/some/path/wuer136intro-4.JPG/some/path/xbzf136INTRO-1.jpg
Percebo que os nomes dos arquivos do segundo comando estão separados por caracteres nulos, mas por que recebo 3 resultados em oposição aos 5 acima?
Respostas:
Seu primeiro exemplo
não é equivalente a
É equivalente a
Quando sua expressão contém outra ação
-purge
, a impressão implícita não é mais adicionada. Você querO motivo pelo qual você está recebendo apenas três nomes de arquivos é que esses são os que correspondem à sua segunda condição (a que possui uma ação). O que você digitou realmente significa
O que espero esclarecer por que apenas 1 lado imprime alguma coisa.
fonte
find /some/path -iregex '.*intro.*\.jpe?g'
... e como agora existe apenas uma expressão, ela evitará o problema destacado por cjm.