13

我在目录“home”中,我运行这个命令

find . -iname *.mov

它产生

./root/movies/Corey/holtorf/Intro.mov

现在,我“cd ..”并运行相同的命令

find . -iname *.mov

这次“Intro.mov”不在结果中。这背后的原因是什么?递归搜索当前目录中每个以“.mov”结尾的文件的命令是什么?谢谢。

4

4 回答 4

23

在参数中使用通配符时,它由 shell 扩展。为防止这种情况,您需要编写“*.mov”。

在您的情况下,shell在将参数传递给 find之前会扩展到它找到的任何文件,然后它会获取文件列表并且不会根据原始模式进行搜索。

于 2013-04-10T16:26:35.057 回答
21

-follow如果您的主目录实际上是一个符号链接,您可能需要添加。还要引用该模式,否则外壳会在将其传递给find.

find . -iname "*.mov" -follow
于 2013-04-10T16:26:34.170 回答
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/

于 2013-04-10T16:35:11.613 回答
1

我会使用:

 grep -rn 'mov' .

递归数字搜索

于 2013-04-10T16:37:31.013 回答