Apagar linhas em vários arquivos em uma pasta uma vez (evitar loop infinito)

4

Eu tenho vários arquivos em uma pasta e quero excluir as primeiras linhas de todas elas. Se eu fizer isso:

sed -i.bak '1,2000d' *.dat

as primeiras 2000 linhas são excluídas, mas o nome do arquivo ainda está no formato *.dat e as próximas 2000 linhas também são excluídas, e assim por diante até que o arquivo esteja vazio. Como posso consertar isso? De preferência sem um script complicado? Existem muitos arquivos para apenas listar todos os nomes de arquivos, eles são muito complicados para digitar todos eles.

    
por Apatura 27.05.2015 / 12:04

1 resposta

4

Você pode usar um loop for, então o comando é executado para cada arquivo exatamente uma vez:

for file in *.dat; do sed -i.bak '1,2000d' "$file"; done

Aviso, -i.bak faz o backup do arquivo original com .bak ending.

    
por chaos 27.05.2015 / 12:15