Aqui está um pequeno programa em Python que pode fazer isso:
import sys
def chunkCheck(fileObject, chunkSize=1024):
while True:
data = fileObject.read(chunkSize)
if not data:
return False
if data.strip("$ printf 'files=( file1 file2 )
for file in "${files[@]}"; do
./onlynulls "$file" || printf '%s\n' "$file"
done
import sys
def chunkCheck(fileObject, chunkSize=1024):
while True:
data = fileObject.read(chunkSize)
if not data:
return False
if data.strip("$ printf 'files=( file1 file2 )
for file in "${files[@]}"; do
./onlynulls "$file" || printf '%s\n' "$file"
done
%pre%%pre%' > file
$ ./onlynulls file && echo "Only nulls" || echo "Non-null characters"
Only nulls
$ printf a >> file
$ ./onlynulls file && echo "Only nulls" || echo "Non-null characters"
Non-null characters
"):
return True
sys.exit(chunkCheck(open(sys.argv[1])))
%pre%' > file
$ ./onlynulls file && echo "Only nulls" || echo "Non-null characters"
Only nulls
$ printf a >> file
$ ./onlynulls file && echo "Only nulls" || echo "Non-null characters"
Non-null characters
"):
return True
sys.exit(chunkCheck(open(sys.argv[1])))
E em ação:
%pre%
Você pode verificar vários arquivos usando -exec
, xargs
, GNU parallel
e programas semelhantes do find. Alternativamente, isso irá imprimir nomes de arquivos que precisam ser tratados:
%pre%
Tenha em mente que, se você for passar a saída deste para outro programa, os nomes de arquivos podem conter novas linhas, então você deve delimitá-lo de forma diferente (apropriadamente, com %code%
).
Se você tiver muitos arquivos, seria melhor usar uma opção para processamento paralelo, já que isso só lê um arquivo de cada vez.