找到没有找到递归
问题描述:
我在目录下的“家”是,我运行此命令找到没有找到递归
find . -iname *.mov
和它产生
./root/movies/Corey/holtorf/Intro.mov
现在,我“CD ..”并运行相同命令
find . -iname *.mov
这次“Intro.mov”不在结果中。 这背后的原因是什么? 什么是递归搜索当前目录中以“.mov”结尾的每个文件的命令?谢谢。
答
在参数中使用通配符时,它由shell进行扩展。为了防止这种情况,您需要编写“* .mov”。
在你的情况下,外壳扩展到它找到的任何文件之前传递参数来查找,然后获取文件的列表,并将不会基于原始模式进行搜索。
答
如果您的主目录实际上是符号链接,则可能需要添加-follow
。另外引用该模式,否则shell会在将它传递到find
之前尝试扩展它。
find . -iname "*.mov" -follow
答
我还不能评论,所以我会张贴这个答案(我提前道歉)。
和附加信息,可能有利于你: 要递归找到在当前目录特定名称的文件时,您可以使用grep的或发现
grep -r "*.mov" .
或不区分大小写的搜索
grep -ri "*.mov" .
并找到
find . -type f -exec grep -l "*.mov" {} +
也是一个有用的链接http://www.cyberciti.biz/faq/howto-recursively-search-all-files-for-words/
答
我会用:
grep -rn 'mov' .
递归数字搜索