在文件路径之间添加空格

在文件路径之间添加空格

我有一个文件夹列表,在每个文件夹中都有一个文件“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

另一种方式,假设 GNU find(1),只是为了好玩:

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

相关内容