这可能已经有了答案。但我没能找到它。
我有:
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
)。将> textfile
stdout 重定向到名为 textfile 的文件,而不需要 cat。
find
是一个功能强大的工具,有很多选项。看看man find
您是否发现需要稍微调整输出。
更新(谢谢gvkv):
如果你想把内容将文件合并到单个文本文件中,那么一种方法是:
find Documents/ -type f -exec cat {} + > textfile
答案2
find
是通用的方式,如史蒂文·D的回答解释说。如果你的 shell 支持它,**
可以用来匹配任意数量的子目录(在 bash 上它与*
默认情况下相同并且仅匹配一个子目录,但请参阅 Dennis 的评论),所以你可以这样做:
cat **/*