Saída de um comando para a primeira linha de um arquivo

2

Estou tentando inserir a saída de um comando na primeira linha de um arquivo.

Por exemplo, tenho um arquivo chamado "list.txt" e quero inserir um texto contendo todos os nomes de arquivos nessa pasta. Uma maneira de direcionar a saída do comando ls para a primeira linha do list.txt.

    
por Hamdi 04.03.2015 / 21:34

3 respostas

4

A maioria das pessoas conhece o sed como uma ferramenta de pesquisa e replicação baseada em regex, mas é um editor completo capaz de fazer edições.

Então você poderia emitir um comando como este. Qual seria inserir ( 1 i ) a primeira linha do comando ls $(ls| head -1) no arquivo list.txt inplace ( -i ).

sed -i "1 i$(ls| head -1)" list.txt
    
por 04.03.2015 / 23:58
2

Não existe uma maneira nativa de redirecionar para a primeira linha de um arquivo, mas você poderia usar um arquivo temporário para conseguir isso de qualquer maneira. Por exemplo, primeiro anexe a saída a list2.txt e depois cat list.txt a ela e grave a saída inteira de volta para list.txt :

ls > list2.txt
cat list.txt >> list2.txt
mv list2.txt list.txt

Dessa forma, você deve acabar com o que está procurando.

    
por 04.03.2015 / 21:38
2

Há provavelmente uma maneira mais elegante de fazer isso, mas você pode usar vários arquivos. Por exemplo:

ls | head -n 1 > temp-list.txt
cat list.txt >> temp-list.txt
mv temp-list.txt list.txt
    
por 04.03.2015 / 21:38