cant: Adicione uma nova linha a cada arquivo que não tenha um no final do arquivo

1

Eu estou ficando incontável

warning: no newline at end of file

De algum código que foi editado pela última vez no Windows.

No Linux, como posso consertar todos esses arquivos cpp / h e adicionar uma nova linha ao final de cada arquivo que não tenha uma nova linha?

Estou tentando usar o sed:

find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print | xargs sed -i -e "$G"

Mas ainda não consegui que funcione.

    
por Zeno 11.12.2011 / 03:04

2 respostas

2

Na ausência de dos2unix - qual seria o caminho ideal, tente:

find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print0 | xargs -0 -iFILE sh -c 'echo >> FILE'

ou

find . -type f \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -exec sh -c 'echo >> {}' \;

Observe que o redirecionamento é sempre um problema - a substituição não ocorre como desejado sem o lançamento de um novo shell.

Como sua pergunta era sobre "sed", você também pode fazer isso como:

find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print0 | xargs -0 sed -i -e '$a\
\'

(Esse é um caractere de nova linha literal - não um \ n ou qualquer outra coisa - provavelmente melhor feito como copiar e colar - pois pode ser difícil digitar:).

    
por 11.12.2011 / 04:39
0
find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print | xargs dos2unix {}
    
por 11.12.2011 / 04:26

Tags