Eu tentei isso:
find /usr/lib -print0 | grep zip | xargs -0 -I{} echo "found file: {}"
find /usr/lib -print0 | grep --null zip | xargs -0 -I{} echo "found file: {}"
Mas não funciona porque grep apenas diz que há uma correspondência de arquivo binário. Eu quero que o grep produza linhas terminadas em nulo.
É possível corrigir isso sem alterar todo o comando? Eu sei que é possível usar find -name ... -exec ...
. Mas seria bom se meu comando existente pudesse ser corrigido.
Dado o uso de
--null
, presumo que você esteja usando GNUgrep
. Você pode dizer a ele para considerar os dados separados por nulo com a opção-z
(--null-data
) e tratar tudo como texto com a-a
opção:(lembre-se de que você não pode usar
echo
para gerar dados arbitrários).--null
afeta apenasgrep
a saída de nomes de arquivos e não tem efeito aqui.Como você mencionou, você pode fazer isso inteiramente usando GNU
find
, mesmo sem usar-exec
, embora preciseLC_ALL=C
encontrar arquivos cujo caminho não tenha texto em ambos os ladoszip
(improvável no/usr/lib
entanto):