De acordo com esta resposta sed
pode filtrar linhas pelo tamanho:
sed -e '/.\{120\}/!d'
[…] matches lines that don't have (at least) 120 characters (the
!
after the expression is to execute the command on lines that don't match the pattern before it), and deletes them (ie. doesn't print them).
sed -i
funciona no lugar. Isso leva a uma abordagem a seguir:
cp -a original_dir/ modified_dir/
find modified_dir/ -type f -exec sed -i -e '/.\{80\}/!d' {} +
Agora, todos os arquivos de original_dir/
têm sua versão modificada em modified_dir/
.
Como alternativa, você pode trabalhar totalmente dentro do original_dir/
, informando sed
para salvar arquivos antigos com um sufixo:
find original_dir/ -type f -exec sed -i.old -e '/.\{80\}/!d' {} +
Nesse caso, se você usar -i
em vez de -i.old
, os arquivos antigos serão perdidos.