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