Adicione uma linha a todos os arquivos encontrados

1

Minha hierarquia de diretórios de trabalho original:

$ find
.
./usr1
./usr1/.vimrc
./usr2
./usr2/.vimrc

Eu quero adicionar uma linha - "set number" - a todos os arquivos .vimrc . Então eu corri este comando:

find -name ".vimrc" -exec echo "set number" >> {} \;

Mas, todos os arquivos .vimrc permanecem os mesmos, e há um novo arquivo {} no meu diretório de trabalho:

$ find
.
./usr1
./usr1/.vimrc
./{}
./usr2
./usr2/.vimrc

O que está errado? Como posso fazer isso corretamente?

    
por Feng Yu 09.01.2016 / 10:02

1 resposta

1

Se você quiser redirecionar a saída do comando com -exec , é melhor executar o comando shell; Experimente a seguinte sintaxe no seu caso:

find -name ".vimrc" -exec sh -c 'echo "set number" >> {}' \;

Isso funcionará como esperado.

    
por 09.01.2016 / 10:23

Tags