定位、查找文件的命令
命令 | 功能 | 命令 | 功能 |
which | 从path中找出文件的位置 | find | 找出所有符合要求的文件 |
whereis | 找出特定程序的路径 | locate | 从索引中找出文件位置 |
9.1 which
语法
which command
说明
依序从path环境变量所列的目录中找出command的位置,并显示完整路径的名称。在找到第一个符合条件的程序文件时,就立刻停止搜索,省略其余未搜索目录。
范例,找出ls命令的程序文件的位置:
which ls
系统输出:
/usr/bin/ls
9.2 whereis
语法
whereis [option] name
说明
找出特定程序的可执行文件、源代码文件以及manpage的路径。你所提供的name会被先除去前置的路径以及任何.ext形式的扩展名。
whereis 只会在标准的Linux目录中进行搜索。
常用选项
-b
只搜索可执行文件。
-m
只搜索manpage。
-s
只搜索源代码文件。
-B directory
更改或限定搜索可执行的文件的目录。
-M directory
更改或限定搜索manpage的目录。
-S directory
更改或限定搜索源代码文件的目录。
9.3 find
语法
find paths expression [action]
说明
以paths为搜索起点逐层往下找出每一个符合expression条件的文件,并对该文件执行action所代表的动作。expression是搜索条件,它由一个代表匹配项目的选项以及一个代表匹配模式的参数构成。
action是处理动作,它有一个代表“处理方式”的选项以及一个操作参数构成。若不指定action,则默认动作是显示出文件名。
常用的搜索条件
-name pattern
-path pattern
-lname pattern
找出名称、路径名称或符号链接的目标匹配pattern模式的文件。pattern可以包含shell的文件名通配符,路径是相对于搜索起点的。
常见处理动作
显示出文件的相对路径(相对于搜索起点)。
-exec cmd /;
执行指定的shell命令。若cmd含有任何shell特殊字符,则他们之前都必须加上/符号,以免shell立刻执行他们。在cmd里,可以用”{}”符号(包括双引号)表示find所找出的文件。
9.4 locate
语法
locate patterns
说明
第一次执行locate时,它会建立一个索引数据库,当往后再次执行时,它便从索引数据库中迅速找出文件的位置。locate很适合用来反复搜索很少变动的目录树,但是对于刚改名的旧文件以及新建的文件,locate就找不到了,除非重建数据库。
updatedb
语法
updatedb [option]
说明
更新slocate的索引数据库。
选项
-e directories
略过directories所列的目录。