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


15

我想知道,有效使用find命令的最佳方法是什么?

我通常使用它,find [filename] [dir]这给了我很长的文件名列表,这些文件名与我的搜索都没有任何关系。

我只需要在特定目录中找到一个文件即可。这是什么命令?

Answers:


24

您通常会告诉查找从哪里开始搜索以及要查找的内容。因此,搜索路径的语法与您实际尝试查找的内容不同。

对于您提到的用例,假设您要在中找到passwd文件/etc

find /etc/ -name passwd

您说的是“从etc开始,查找名称passwd

如果您未指定条件(或用find术语表述的“选项”),find所做的就是,它从您指定的路径开始,然后递归查找其下的所有文件和目录。因此,这些选项可以“过滤”这些文件,以缩小搜索范围。

在文件系统中的任何位置查找所有JPG文件:

find / -name "*jpg" 

建议在选项中使用引号,因为否则外壳扩展会导致您头痛。

不论大小,均可在“文档”或“下载”中找到任何pdf文件:

find Documents/ Downloads/ -iname "*pdf"

如果您这样做man find并向下滚动到TESTS,则会找到所有可用于缩小搜索范围的“条件”。您可以搜索具有特定文件名,由特定用户或组拥有,具有特定文件许可权,具有特定类型的文件(例如,-type d仅查找目录,而-type f仅查找普通文件(不包括目录)),早于或早于特定天数(或分钟),空文件,可执行文件等。

在find的手册页中,您还会找到一个名为ACTIONS的部分,这些部分可以遵循条件,并且可以由与所有条件匹配的任何文件触发。因此,您可以find执行一些操作,例如删除找到的文件,对其执行任意命令等等。

但是当然,基本语法仍然存在:

find [starting path(s)] [conditions or criteria]

谢谢,这很好。我真的很困惑,这有助于使事情变得正确
Sam007 '19

1
+1这是一个很好的介绍,也向OP教授如何查找更多信息。
lgarzo 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.