Supondo que seus arquivos contenham APENAS a cadeia NULL (sem nova linha, \n
), você pode usar grep
e localizar esses arquivos.
O comando find irá coletar todos os arquivos com pelo menos 1 byte de tamanho ( -size +1c
) no diretório atual e então usar grep para verificar se eles contêm apenas repetições do caractere NULL:
$ find . -type f -size +1c -exec grep -m 1 -ovP "[^$ find . -type f -size +1c -exec grep -m 1 -ovP "[^$ find . -type f -size +1c -exec grep -m 1 -ovP "[^$ find . -type f -size +1c -exec grep -m 1 -ovP "[^%pre%]" {} \; | cut -d ' ' -f 3- | sed 's/ matches//'
./empty_file with spaces.jpg
./empty_file
]" {} \;
Binary file ./empty_file with spaces.jpg matches
Binary file ./empty_file matches
]" {} \; | cut -d ' ' -f 3- | sed 's/ matches//'
./empty_file with spaces.jpg
./empty_file
]" {} \;
Binary file ./empty_file with spaces.jpg matches
Binary file ./empty_file matches
O -v
flag do grep faz com que ele imprima linhas não correspondentes. -m
1 significa "Parar após a primeira correspondência", -o
significa imprimir apenas a parte da linha correspondente (evita imprimir linhas vazias de outros arquivos) e P
usa expressões regulares Perl. O padrão [^
significa qualquer caractere não NULL
]-v
. Ao inverter isso ( -m 1
) e adicionar o NULL
flag, o grep irá reportar uma correspondência somente se o arquivo não contiver nada além de cut
.
Finalmente, você pode canalizar isso através de sed
e %code% para imprimir o nome do arquivo correspondente sozinho: