Cria um arquivo por linha via shell

-1

Eu tenho um arquivo contendo uma lista de nomes de arquivos, como este

file1.cfg
file2.cfg
file3.cfg

Eu quero, usando o terminal linux, dividir isso em n arquivos com o nome do arquivo, cada um contendo também o nome do arquivo como uma string.

Por exemplo, após a transformação, quero que o conteúdo de file1.cfg seja

filename=file1.cfg

e em file2.cfg

filename=file2.cfg

etc.

Qual é a melhor maneira de conseguir isso?

    
por Benno 20.02.2014 / 21:53

3 respostas

3

Supondo que seu arquivo seja chamado de configs , você pode conseguir isso com

for i in $(cat configs); do echo "filename=$i">$i; done
    
por 20.02.2014 / 21:58
3

Contanto que você conte awk como shell, isso é simplesmente

awk '{print "filename="$0 >$0}' file.cfg
    
por 20.02.2014 / 22:00
2

Algo como isso deve fazer o truque:

while read line; do echo "filename=$line" > $line; done < file

ele abrirá o arquivo, lerá linha por linha e, para cada linha, criará um arquivo com o nome sendo o conteúdo da linha e, em seguida, gravará uma linha nesse arquivo com o conteúdo do comando echo (sendo filename =). advertência: eu não testei realmente.

    
por 20.02.2014 / 21:58