在我的脚本中,我需要列出目录及其子目录中的所有文件,例如可以用tree -if
完成,但是我需要忽略列表中的目录- -它们只需要出现在文件的路径中即可。我在手册页上没有看到tree
上仅列出文件的内容,基本上与-d
的相反,后者仅列出目录。
我该怎么做?
答案 0 :(得分:2)
使用find
代替tree
。
find ! -type d ! -name '.*' -print
-type d
匹配目录,!
表示排除它们。 ! -name '.*'
排除以.
开头的文件名(隐藏文件)。
答案 1 :(得分:1)
由于您的问题是标签zsh
,因此您可以在zsh
中进行以下操作:
ls **/*(.)
**
表示递归,最后的(.)
表示仅文件。
如果它是bash
,则可能要尝试指定zsh
。大多数bash
工作在zsh
中。
也许我没有得到所有的约束,但是如果是这样的话,可以将它们放在注释中,然后我将优化答案。
更新:
如评论中所述,如果文件列表很长,则此解决方案将失败,因为扩展了全局范围,因此所有文件名都将在命令行中有限制。如果是这样,find
是一个比较安全的选择。但这总是值得尝试的,因为我个人觉得扩展的globe更容易记住。