ファイルパス間にスペースを追加する

ファイルパス間にスペースを追加する

フォルダのリストがあり、各フォルダには、すべてのフォルダに同じ名前の "file.txt"ファイルがあります。すべてのフォルダからこのファイルへのパスを収集し、テキストファイルとして保存したいと思います。これを行うには、親フォルダで次のコマンドを実行しました。

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

このコマンドは、次のように "path.txt"ファイルのすべてのフォルダにあるファイルへのすべてのパスを保存します。

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
.
.
.
.

"path.txt"ファイルの行間にスペースを作成して、次のように表示するにはどうすればよいですか?

/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 ...

答え1

もう一つの方法は、find(1)楽しみとしてGNUを仮定することです。

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

答え2

「tr」コマンドを使用して、LF文字をスペースに置き換えることができます。

tr '\012' ' ' < path.txt

これは元のコマンドの一部である可能性があります。

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

答え3

簡単な方法はfind出力をパイプすることですxargs(明示的なコマンドが提供されないときのデフォルトの動作はその引数をエコーすることです)。

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

単にすべての改行を空白に置き換えるのではなく、最終的な改行を維持します。

答え4

pasteまた、使用することができます、

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

関連情報