Linux:使用 find 命令查找和定位文件第 1 部分
许多新手发现在 Linux / *BSD 或 Solairs UNIX 操作系统的 shell 提示符下使用 find 命令很困难。Find 是远程服务器上的一款好用工具,UNIX 管理员也可以在其中找到大量信息。桌面用户可能会发现 GNOME Search 工具非常方便,可用于在系统上查找文件。Find 命令可以根据各种搜索约束执行搜索。它搜索文件系统的一个或多个目录树,根据用户指定的某些条件定位文件。默认情况下,find 返回当前工作目录下的所有文件。此外,find 允许用户指定对每个匹配文件要采取的操作。因此,它是一个功能极其强大的程序,可以对许多文件应用操作。它还支持正则表达式匹配。
GNOME 搜索工具 GUI 程序
GNOME 搜索工具是一个用于在系统上查找文件的实用程序。要执行基本搜索,您可以键入文件名或部分文件名,带或不带通配符。您可以从菜单启动此程序,也可以在 shell 提示符下键入以下命令:
$ gnome-search-tool &
GNOME 搜索工具内部使用 find、grep 和 located UNIX 命令。搜索的大小写敏感性取决于您的操作系统。例如,在 Linux 上,find、grep 和 located 命令支持 -i 选项,因此所有搜索都不区分大小写。
查找命令语法
查找 {搜索路径} {要搜索的文件名} {要采取的操作}
在哪里,
- search-path:定义搜索路径(默认当前目录)。例如在 /home 目录中搜索。
- file-names-to-search:要查找的文件的名称。例如所有 c 文件 (*.c)
- 要采取的操作:操作可以是打印文件名、删除文件等。默认操作是打印文件名。
查找命令示例
让我们尝试一些例子。
查找文件并打印其全名
您希望找出位于 /home 目录下的所有 *.c(所有 c 源代码)文件,请输入:
$ find /home -name "*.c"
您想找到 httpd.conf 文件位置:
$ find / -name httpd.conf
查找用户拥有的所有文件
找出用户 vivek 拥有的所有文件:
# find / -user vivek
找出用户 vivek 拥有的所有 *.sh:
# find / -user vivek -name "*.sh"
根据日期和时间查找文件
一段时间内未访问的文件 – 找出在指定天数内被访问或未被访问的文件很有用。以下命令打印过去 7 天内未访问的所有文件:
# find /home -atime +7
- -atime +7:最后访问时间超过 7 天的所有文件
- -atime 7:最后访问时间为 7 天前的所有文件
- -atime -7:最后访问时间少于 7 天的所有文件
查找指定时间内修改的文件——显示 /home 目录中几天前未进行最后修改的所有文件的列表。
# find /home -mtime -7
查找较新(最近)修改的文件
使用 -newer 选项来查明文件是否比给定文件更新。
# find /etc/apache-perl -newer /etc/apache-perl/httpd.conf
查找文件的最新版本
在修改文件之前,将文件复制到系统中的某个位置是常见的做法。例如,每当我修改 Web 服务器 httpd.conf 文件时,我都会先进行备份。现在我不记得我是否修改了 /backup.conf/httpd.conf 或 /etc/apache-perl/httpd.conf。您可以使用 find 命令,如下所示(提示您也可以使用 ls -l 命令):
find / -name httpd.conf -newer /etc/apache-perl/httpd.conf
定位命令
locate 命令通常是在 Linux 和其他类 Unix 操作系统上查找文件和目录位置的最简单、最快捷的方法。
例如,以下命令使用星号通配符显示系统中所有具有 .c 文件扩展名的文件:
# locate "*.c"
进一步阅读
- 阅读 find 和 location 命令手册页以获取更多信息。