Eu tenho um diretório cheio de arquivos de texto. Meu objetivo é anexar texto ao início e ao final de todos eles. O texto que vai no começo e no final é o mesmo para cada arquivo.
Com base no código que recebi da Web, este é o código para anexar ao início do arquivo:
echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt
Este é o código para anexar ao final do arquivo. O objetivo é adicionar o texto };
no final de cada arquivo:
echo "};" >> $BASEDIR/Translations/Javascript/*.txt
Os exemplos que tirei foram para atuar em arquivos individuais. Eu pensei em tentar atuar em vários arquivos usando o curinga *.txt
,.
Eu posso estar cometendo outros erros também. De qualquer forma, como anexo texto ao início e ao fim de vários arquivos?
fonte
-i
invés dessa substituição de arquivo não funciona, apenas imprime no stdout.Tente usar
ex
:onde os comandos são:
bufdo!
executa comandos abaixo para cada arquivo / buffer aberto (nota: não é POSIX )1s/^/HEAD/
- insereHEAD
texto na primeira linha no início da linha$s/$/TAIL/
- acrescentaTAIL
texto na última linha no final da linhae argumentos são:
-s
- modo silencioso / rápido-cxa
- salve todos os buffers / arquivos abertos e saia*.foo
- todos os arquivos no diretório atual (*
), comfoo
extensão, uso**/*.foo
de recursividade (após permitindo globstar:shopt -s globstar
)fonte
Com
gnu awk
, usando ainplace
extensão eBEGINFILE
/ENDFILE
:fonte
Também tem o direito de estar (com resultados em
.out
arquivos):Outra variante, mais elaborada - arquivos de origem substituídos pelo resultado:
fonte
One-liner Perl para o resgate:
fonte