如何在ubuntu终端中键入文件路径以包含所有子目录中的所有文件?
如果我有一个名为“books”的主目录,但是有大量子目录,其中包含各种不同名称的子目录,那么如何键入路径以包含所有子目录中的所有文件?
/书籍/ ???
答案 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`