フォルダのリストがあり、各フォルダには、すべてのフォルダに同じ名前の "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