Linux系统查找
1. which:在当前用户环境变量PATH指定的路径下查找可执行程序/文件。(需要指定文件完整名称)
特点:
(1)只在当前用户环境变量指定的路径下查找;
(2)只找出可执行程序/文件的位置;
(3)查找速度非常快。
which -a:查找当前用户环境变量PATH指定的路径下所有同名的可执行程序/文件,而不只是列出第一个。
注:使用env命令可以查看当前用户的环境变量PATH的值;可以通过修改/root/.bash_profile文件来修改PATH的值,修改后需用户重新登录才能生效。
2. whereis:只在某些特定目录中查找,列出所有与查找程序/文件相关的文件位置。
特点:
(1)只在某些特定目录中查找文件信息;
(2)列出所有与查找程序/文件相关的文件位置(包括可执行文件、配置文件、帮助文档等等);
(3)查找速度非常快。
whereis -l:查看whereis指令查找的全部目录名称。
whereis -b 文件名:只查找这个文件的二进制可执行文件。
whereis -m 文件名:只查找这个文件的帮助文件。
whereis -s 文件名:只查找这个文件的源代码文件。
whereis -u 文件名:查找不在以上三个选项中的其他特殊文件。
注:Linux软件安装有一定的顺序,如:可执行文件放在/usr/bin/,配置文件放在/etc/,帮助文档放在/usr/share/man/。
3. locate:在资料库/var/lib/mlocate/中查找,列出所有包含查找文件名字符串的文件位置。
特点:
(1)在资料库/var/lib/mlocate/中查找文件信息;
(2)模糊查找,只要文件名或路径名中包含查找文件名字符串就列出来;
(3)查找速度快。
locate -S:查看locate指令使用的资料库的相关信息(资料库:/var/lib/mlocate/mlocate.db)。
注:linux系统会将系统内的所有文件都记录在一个文件资料库/var/lib/mlocate/mlocate.db中,当使用locate指令时,会从数据库中查找数据,而不是通过遍历硬盘来查找,效率自然很高。 但是该数据库文件并不是实时更新的,隔一段时间更新一次,因此,在用locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 这时可以执行updatedb指令,它会读取配置文件/etc/updatedb.conf中的配置,再去磁盘中搜索文件数据,生成该资料库的最新版本(需要有root权限),这个过程比较慢。
4. find:通过扫描整个磁盘在指定路径下查找符合过滤条件的文件。
特点:
(1)扫描磁盘查找;
(2)通过过滤条件查找,没关键字时列出当前目录下所有文件信息;
(3)查找功能强大,但查找速度慢。
与时间相关:
find 路径名 - mtime 0:24小时内修改过的相关文件。
find 路径名 - mtime 3:3天前的那一天修改过的文件。
find 路径名 - mtime +3:3天以前所有修改过的文件。
find 路径名 - mtime -3:3天以内所有修改过的文件。
(-atime读取、查看时间记录,-ctime状态时间,权限、内容修改)。
使用者、组名相关:
find 路径名 -user zhengsan:与zhengsan有关的文件。
find 路径名 -nouser:与用户无关的文件(不属于用户、用户组)。
find 路径名 -group zhangsan:用户组zhengsan相关的文件。
文件权限相关:
find 路径名 -name 文件名:查找文件名对应的文件(区分大小写)。
find 路径名 -iname 文件名:查找文件名对应的文件(不区分大小写)。
find 路径名 -type 文件类型:根据文件类型查找文件。
(f普通文件,d目录)
特殊功能:
find 路径名 -size +1000k:大于或等于1000k的文件。
find 路径名 -name ‘*pass*’:通配符查找文件。
特殊权限:
find 路径名 -perm 2770:查找特殊权限文件。
将find指令查找到的文件列表使用ls -l指令展示:
find / -name passwd -exec ls -l {} \;