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

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

我通常使用, find [filename] [dir] ,这给了我一长串的文件名,没有任何与我的搜索相关的文件名。

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

你经常告诉你找到从哪里开始搜索,以及寻找什么。 因此,搜索路径的语法和您实际尝试查找的内容是不同的。

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

 find /etc/ -name passwd 

你说“从等开始,找一个名字passwd的文件

如果你没有指定条件(或查找用语中的“options”),find会做什么,它从你指定的路径(或路径)开始,并以递归方式查找下面的所有文件和目录。 因此选项“过滤”这些文件以缩小您正在寻找的内容。

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

 find / -name "*jpg" 

建议在选项中使用引号,否则shell扩展会让您头疼。

在文档或下载中查找任何pdf文件,无论大小写:

 find Documents/ Downloads/ -iname "*pdf" 

如果你man find并向下滚动到TESTS,你会发现找到的所有“标准”可以用来缩小你的搜索范围。 您可以搜索具有特定用户或组的特定文件名的文件,具有特定文件权限,具有特定类型(例如-type d只能找到目录,而-type f只能查找纯文件,不包括目录) ,文件比特定天数(或分钟)更新或更旧,文件为空,可执行文件等。

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

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

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