Adicione espaço entre os caminhos dos arquivos

Adicione espaço entre os caminhos dos arquivos

Tenho uma lista de pastas e dentro de cada pasta tenho o arquivo "arquivo.txt" que tem o mesmo nome em todas as pastas. Eu queria coletar o caminho desse arquivo de todas as pastas e salvá-lo em um arquivo de texto. Para fazer isso, executei o seguinte comando na pasta pai:

find $PWD -type f -name "file.txt" > paths.txt

Este comando armazenou todos os caminhos para este arquivo de todas as pastas, no arquivo “path.txt” conforme segue:

a/b/c/1/file.txt
a/b/c/2/file.txt
a/b/c/3/file.txt
a/b/c/4/file.txt
a/b/c/5/file.txt
a/b/c/6/file.txt
a/b/c/7/file.txt
.
.
.
.

Como posso criar espaço entre as linhas no arquivo "path.txt" para que ele apareça da seguinte forma:

/a/b/c/1/file.txt /a/b/c/2/file.txt /a/b/c/3/file.txt /a/b/c/4/file.txt /a/b/c/5/file.txt /a/b/c/6/file.txt /a/b/c/7/file.txt ...

Responder1

Mais uma forma, assumindo GNU find(1), apenas por diversão:

find $PWD -type f -name "file.txt" -printf '%p '

Responder2

Você pode substituir o caractere LF por um espaço usando o comando 'tr'

tr '\012' ' ' < path.txt

Isso pode fazer parte do comando original:

find $PWD -type f -name "file.txt" | tr '\012' ' ' > paths.txt

Responder3

Uma maneira simples seria canalizar a findsaída xargs(cuja ação padrão quando nenhum comando explícito é fornecido é repetir seus argumentos)

find $PWD -type f -name "file.txt" | xargs > paths.txt

Ao contrário de simplesmente substituir todas as novas linhas por espaços, isso preserva a nova linha final.

Responder4

pasteVocê também pode usar

find . -type f -name "path.txt" -exec paste -d' ' -s {} \; > path.txt

informação relacionada