Tente o seguinte (iniciado em /home/johnny/
):
for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; done
Cria arquivos .2
no mesmo diretório. Esses arquivos contêm as modificações.
A instrução for
lista todos os arquivos no diretório. Se você quiser processar apenas arquivos de texto, use *.txt
em vez de *
.
O awk
executa 2 tarefas:
- Prepends cada arquivo com "Olá" e a linha em branco.
- Remove espaços e caracteres de tabulação no final de cada linha.
Os resultados são exibidos na saída padrão.
Finalmente, um simples redirecionamento cria os arquivos .2
da saída padrão processada.
Funciona em arquivos com espaços em seus nomes, porque $f
é citado.
Se você não quiser manter os arquivos originais, modifique o comando da seguinte forma:
for f in * ; do awk 'BEGIN {print "Hello\n";} {gsub("([ \t]+)$", ""); print $0; }' "$f" >"$f.2"; mv "$f.2" "$f"; done
A principal adição é um comando move que substitui os arquivos originais pela versão modificada.