tail -c +32
gera sua entrada menos os primeiros 31 bytes. (Sim, o argumento está desativado em um.) Para editar um arquivo no local, use esponja em um loop ou, se você não o tiver e não quiser se preocupar, faça seu trabalho no shell:
for x in /foo/*; do tail -c +32 "$x" | sponge "$x"; done
for x in /foo/*; do tail -c +32 "$x" >"$x.new" && mv "$x.new" "$x"; done
Se os comandos forem interrompidos por qualquer motivo (por exemplo, falta de energia), pode ser difícil descobrir de onde você parou. Gravar os novos arquivos em um diretório separado facilitaria as coisas.
mkdir /foo.tmp
cd /foo
for x in *; do tail -c +42 -- "$x" >"/foo.tmp/$x" && rm -- "$x"; done
mv /foo.tmp/* /foo
rmdir /foo.tmp
Se os arquivos forem realmente grandes (por exemplo, grandes o suficiente para que duas cópias de uma única sejam um problema), você poderá usar uma das técnicas mencionadas neste encadeamento .