如何更高效地使用find命令?

我想知道,如何高效地使用find命令?
通常我使用的是find [文件名] [目录],但是它给我返回了一长串与我的搜索无关的文件名。
我只需要在特定目录中找到一个文件。请问应该使用哪个命令?
1个回答

通常你会告诉我从哪里开始搜索,以及要寻找什么。因此,搜索路径的语法和实际要查找的内容是不同的。
针对你提到的使用情况,我们假设你想在`/etc`目录中找到`passwd`文件。
find /etc/ -name passwd

你是在说“从等等开始,寻找一个文件的名字是passwd”。
如果你不指定条件(或者是find术语中的“选项”),find命令会在你指定的路径(或多个路径)下进行搜索,并且递归地找到所有的文件和目录。因此,这些选项可以过滤出你要查找的内容。
在你的文件系统中找到所有的JPG文件。
find / -name "*jpg" 

在选项中使用引号是推荐的,因为否则shell扩展可能会给你带来麻烦。

无论大小写,在Documents或Downloads中查找任何pdf文件:

find Documents/ Downloads/ -iname "*pdf"

如果你执行man find并向下滚动到TESTS部分,你会发现find可以用来缩小搜索范围的所有“条件”。你可以搜索具有特定文件名的文件,由特定用户或组拥有的文件,具有特定文件权限的文件,属于特定类型的文件(例如-type d只会找到目录,而-type f只会找到普通文件,不包括目录),比特定天数(或分钟)新或旧的文件,空文件,可执行文件等等。
在find的man页面中,你还会找到一个名为ACTIONS的部分,这些部分可以在满足所有条件的文件后执行。因此,你可以让find执行诸如删除找到的文件、对其执行任意命令等操作。
当然,基本语法仍然是:
find [starting path(s)] [conditions or criteria]

谢谢,这个很有效。我之前真的很困惑,这帮助我弄清楚了事情。 - Sam007
1+1这是一个很好的介绍,也教给了提问者如何找到更多信息。 - lgarzo