我在目录“home”中运行此命令
find . -iname *.mov
并生成
./root/movies/Corey/holtorf/Intro.mov
现在,我“cd ..”并运行相同的命令
find . -iname *.mov
这次“Intro.mov”不在结果中。 这背后的原因是什么? 什么是递归搜索当前目录中以“.mov”结尾的每个文件的命令?感谢。
答案 0 :(得分:21)
在参数中使用通配符时,它会被shell扩展。为防止这种情况,您需要编写“* .mov”。
在你的情况下,shell扩展到它找到的任何文件之前将参数传递给find,然后获取文件列表并且不会根据原始模式进行搜索。
答案 1 :(得分:17)
如果您的主目录实际上是符号链接,则可能需要添加-follow
。同时引用模式,否则shell会在将其传递给find
之前尝试展开它。
find . -iname "*.mov" -follow
答案 2 :(得分:4)
我无法评论,所以我会将此作为答案发布(我提前道歉)。
可能对您有益的其他信息: 要以递归方式查找当前目录中具有特定名称的文件,可以使用grep或find
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/
答案 3 :(得分:1)
我会用:
grep -rn 'mov' .
递归数字搜索