生成没有目录条目的文件路径列表

时间:2019-07-17 22:30:30

标签: bash shell tree zsh

在我的脚本中,我需要列出目录及其子目录中的所有文件,例如可以用tree -if完成,但是我需要忽略列表中的目录- -它们只需要出现在文件的路径中即可。我在手册页上没有看到tree上仅列出文件的内容,基本上与-d的相反,后者仅列出目录。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

使用find代替tree

find ! -type d ! -name '.*' -print

-type d匹配目录,!表示排除它们。 ! -name '.*'排除以.开头的文件名(隐藏文件)。

答案 1 :(得分:1)

由于您的问题是标签zsh,因此您可以在zsh中进行以下操作:

ls **/*(.)

**表示递归,最后的(.)表示仅文件。

如果它是bash,则可能要尝试指定zsh。大多数bash工作在zsh中。

也许我没有得到所有的约束,但是如果是这样的话,可以将它们放在注释中,然后我将优化答案。

更新:

如评论中所述,如果文件列表很长,则此解决方案将失败,因为扩展了全局范围,因此所有文件名都将在命令行中有限制。如果是这样,find是一个比较安全的选择。但这总是值得尝试的,因为我个人觉得扩展的globe更容易记住。