linux包括所有目录

时间:2012-01-24 20:13:32

标签: linux ubuntu utf-8 terminal

如何在ubuntu终端中键入文件路径以包含所有子目录中的所有文件?

如果我有一个名为“books”的主目录,但是有大量子目录,其中包含各种不同名称的子目录,那么如何键入路径以包含所有子目录中的所有文件?

/书籍/ ???

3 个答案:

答案 0 :(得分:1)

在books top目录中,您可以使用命令:

find . -type f

然后,如果你想,比如通过cat运行每个文件,你可以使用xargs命令:

find . -type f | xargs cat

有关详细信息,请使用命令:

man find

man xargs

答案 1 :(得分:0)

./books/*

例如,假设我在'书籍的父目录中:

ls ./books/*

修改

实际上,要递归列出所有树,您应该使用:

ls -R ./books/*

答案 2 :(得分:0)

目前还不清楚你真正想要的是什么......如果你直接提出问题,可能会得到一个更好的解决方案,而不是因为你试图绕过原来的问题而遇到的另一个问题。

您的意思是以下内容吗?

file */*

所有子目录的第一个*展开,所有包含的文件的第二个*

我随意选择了file命令。您可以选择要在shell扩展的文件上运行的任何命令。 另请注意,目录也将包含在内(如果未按名称排除,例如*.png*.txt)。 通配符*并不完全包含所有子目录中所有文件的文件路径,但它扩展为与通配符表达式匹配的所有文件(或目录)作为列表,例如file1 file2 file3 file4。另请参阅this tutorial on shell expansion

请注意,可能有相关问题的简单解决方案。要复制所有子目录中的所有文件(例如cp -a,请参阅man cp)。

我也非常喜欢find。结合grep生成更灵活的搜索模式非常容易。提供一个随机的例子:

du `find . | grep some_pattern_to_occur | grep -v some_pattern_to_not_occur`