![如何更有效地使用 find 命令?](https://linux22.com/image/819761/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%9C%89%E6%95%88%E5%9C%B0%E4%BD%BF%E7%94%A8%20find%20%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我想知道有效使用 find 命令的最佳方法是什么?
我通常使用,find [filename] [dir]
它会给我一长串文件名,其中没有一个与我的搜索相关。
我只需要在特定目录中查找一个文件。该命令是什么?
答案1
您通常会告诉 find 从哪里开始搜索以及要查找什么。因此,搜索路径的语法和您实际要查找的内容是不同的。
对于您提到的用例,假设您想passwd
在以下位置找到文件/etc
:
find /etc/ -name passwd
你说的是“从 etc 开始,寻找一个文件,其姓名是passwd
如果您未指定条件(或 find 术语中的“选项”),find 会从您指定的路径(或路径)开始,并递归查找下面的所有文件和目录。因此,选项会“过滤”这些文件以缩小您要查找的范围。
查找文件系统中任何位置的所有 JPG 文件:
find / -name "*jpg"
建议在选项中使用引号,否则 shell 扩展可能会给您带来麻烦。
在文档或下载中查找任何 pdf 文件(无论大小写):
find Documents/ Downloads/ -iname "*pdf"
如果您这样做man find
并向下滚动到 TESTS,您将找到 find 可以用来缩小搜索范围的所有“条件”。您可以搜索具有特定文件名的文件、由特定用户或组拥有的文件、具有特定文件权限的文件、特定类型的文件(例如,-type d
将仅查找目录,而-type f
将仅查找纯文件,不包括目录)、比特定天数(或分钟)更新或更早的文件、空文件、可执行文件等。
在 find 的手册页中,您还会发现一个名为 ACTIONS 的部分,这些部分可以遵循条件,并且将由符合所有条件的任何文件触发。因此,您可以find
执行诸如删除它找到的文件、对其执行任意命令等操作。
但当然基本语法仍然存在:
find [starting path(s)] [conditions or criteria]