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

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

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 dos arquivos dessa pasta. Uma forma de direcionar a saída do lscomando para a primeira linha de list.txt.

Responder1

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

Então você poderia emitir um comando como este. O que inseriria ( 1 i) a primeira linha do comando ls $(ls| head -1)no list.txtarquivono lugar( -i).

sed -i "1 i$(ls| head -1)" list.txt

Responder2

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

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

Dessa forma, você deve acabar com o que procura.

Responder3

Provavelmente existe 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

informação relacionada