使用find命令搜索文件和文件夹
在本教程中,我们将看看find命令,以及如何快速地使用它来查找文件系统中的文件。 查找是一种功能强大的实用程序,可以在您的系统上的任何位置找到文件,包括已安装的驱动器和可移动存储,处理正则表达式,甚至在这些文件上运行 幸运的是,只需要几个简单的选项来为大多数用户提供所需的全部功能。
find命令的格式为:
找到[-H] [-L] [-P] [-D debugopts] [-Olevel] [path ...] [expression]
H,L和P选项指定是否遵循符号链接。 存在debugopts来提供调试信息,而-Olevel
提供查询优化。 对于本教程和大多数使用find,我们只需要指定路径和表达式。
路径
该路径指定在文件系统上查看的位置。 查找将搜索此路径和所有子目录。 要搜索整个文件系统,请为路径指定“/”。
表达
表达式由三个部分组成:选项,测试和操作。
选项
-help这将打印出一个简要的find命令用法
find -help
-mount此选项告诉您不要搜索其他文件系统上的目录,例如安装的USB驱动器和其他可能搜索速度较慢的卷。
测试
测试部分将告诉您找到要查找的内容。
-executable这个告诉find只返回可执行文件和目录的文件。 找到一个您知道名称(与-file d
标志相结合)或可执行文件(与-file f
标志相结合)的目录很有用。
-name / -iname这将给出您要搜索的文件(或目录)名称的字符串。 它应该用双引号(“)括起来,元字符(`*',`?'和`[]')可以用于名称的一部分。- name
使搜索大小写敏感,而--iname
使其不区分大小写。
-regex使用这个而不是-name
来使用Emacs样式正则表达式来搜索一个名称。
-type使用它来指定是否要查找文件( -type f
)或目录( -type d
)。
行动
此部分用于对find命令的结果执行操作。
-exec在发送到命令的文件名中找到的每个文件上执行一个命令。
抑制错误
通常,当您使用非root用户帐户搜索所有目录时,您会收到如下错误:“find:`/ var / spool / cron / crontabs”:权限被拒绝我们可以通过发送它们从输出中删除这些错误通过将2> / dev / null
添加到find命令到/ dev / null
。
例子
搜索整个文件系统的可执行文件
find / -name "grep" -executable -type f 2>/dev/null
搜索目录的整个文件系统(但不是安装的驱动器)
find / -mount -executable -iname "music" -type d 2>/dev/null
进一步阅读
本教程仅涵盖查找功能的一部分。 我希望能做大部分你需要的,但是在搜索手册中还有更多的选择。
man find
有关正则表达式的信息,为您提供更多的灵活性,您的搜索字词,请参阅手册页的POSIX正则表达式
man 7 regex