ls 遍历整个目录树以生成一个可通过管道传输的文件列表

ls 遍历整个目录树以生成一个可通过管道传输的文件列表

这可能已经有了答案。但我没能找到它。

我有:

directory
directory/subdirectory/subdirectoryofsubdirectory
directory/sub-subdirectory/subdirectoryofsub-subdirectory/subdirectoryofsubdirectoryofsub-subdirectory
directory/sub-sub-subdirectory
directory/sub-sub-sub-subdirectory

每个目录和子目录都包含文件。我想列出所有这些,将列表通过管道传输到 cat,然后将列表传输到文本文件。这可以通过“单线”来完成吗?如果有,请提供。或者它是否需要脚本,如果需要,我需要什么命令/结构来编写脚本?

答案1

我认为你最好的选择是find命令。如果您只想要列表中的文件而不是目录,则如下所示:

find directory/ -type f -print > textfile

find 命令将递归地列出文件。 (如果您也希望列出目录,请删除-type f)。将> textfilestdout 重定向到名为 textfile 的文件,而不需要 cat。

find是一个功能强大的工具,有很多选项。看看man find您是否发现需要稍微调整输出。

更新(谢谢gvkv):

如果你想把内容将文件合并到单个文本文件中,那么一种方法是:

find Documents/ -type f -exec cat {} + > textfile

答案2

find是通用的方式,如史蒂文·D的回答解释说。如果你的 shell 支持它,**可以用来匹配任意数量的子目录(在 bash 上它与*默认情况下相同并且仅匹配一个子目录,但请参阅 Dennis 的评论),所以你可以这样做:

cat **/*

相关内容