命令用途:在指定目录下搜索文件或目录。
命令语法:find [搜索范围] [-选项] [匹配条件]
常用选项:
-name:根据文件名(区分大小写)进行搜索;
-iname:根据文件名(不区分大小写)进行搜索;
// 搜索/etc目录下文件名为init的文件或目录
find /etc -name init
// 搜索/etc目录下文件名中包含init的文件或目录
find /etc -name *init*
// 搜索/etc目录下文件名以init开头,后面跟3个其他字符的文件或目录
find /etc -name init???
-size:根据文件的大小(以数据块为单位,1数据块=0.5k=512字节)进行搜索;
// 搜索/etc目录下文件大小大于100mb的文件
find /etc -size 204800
// 搜索/etc目录下文件大小大于50mb且小于100mb的文件
find /etc -size 102400 -a -size -204800
// 搜索/etc目录下文件大小等于100mb或者文件名以init开头的文件
find /etc -size 204800 -o -name init*
-user:根据文件的所有者进行搜索;
-group:根据文件的所属组进行搜索;
// 搜索/etc目录下文件的所有者为root的文件或目录
find /etc -user root
// 搜索/etc目录下文件的所属组为root的文件或目录
find /etc -group root
-amin:根据文件的访问时间进行搜索;
-cmin:根据文件属性的修改时间进行搜索;
-mmin:根据文件内容的修改时间进行搜索;
//搜索/etc目录下5分钟之内被访问过的文件或目录
find /etc -amin -5
//搜索/etc目录下5分钟之内属性被修改过的文件或目录
find /etc -cmin -5
//搜索/etc目录下5分钟之内内容被修改过的文件或目录
find /etc -mmin -5
-type:根据文件类型进行搜索(f文件、d目录、l软链接文件);
-inum:根据i节点进行搜索;
//搜索/etc目录下的软链接文件
find /etc -type l
//搜索/etc目录下文件名以init开头的目录
find /etc -name init* -a -type d
//搜索/etc目录下i节点号为917211的文件
find /etc -inum 917211
-exec/-ok(询问确认):对搜索结果执行操作;
//搜索/etc目录下文件名以init开头的文件或目录,并显示其详细信息
find /etc -name init* -exec ls -l {} \;
//搜索/etc目录下文件名以init开头的文件,并显示其详细信息
find /etc -name init* -a -type f -ok ls -i {} \;
命令用途:locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
命令语法:locate[-选项][文件名]
常用选项:
-i:不区分大小写;
//使用locate命令搜索之前,先使用updatedb命令,手动更新数据库
updatedb
// 搜索etc目录下文件路径中包含init(不区分大小写)的文件或目录
locate -i etc/init
命令用途:在环境变量$path设置的目录里查找并显示命令的绝对路径。
命令语法:which[命令名]
// 查看ls命令的绝对路径
which ls
命令用途:查询指定命令的二进制文件、源代码文件和man帮助手册文件等相关文件的路径。
命令语法:whereis[-选项][命令名]
常用选项:
-b:只查找二进制文件;
-m:只查找帮助文件;
-s:只查找源代码文件;
// 搜索ls命令的二进制文件的绝对路径
whereis -b ls
// 搜索ls命令的帮助手册的绝对路径
whereis -m ls
命令用途:grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
命令语法:grep[-选项][匹配条件][文件名]
常用选项:
-i:不区分大小写;
-v:排除指定字串;
// 搜索etc目录下的inittab文件中包含multiuser (不区分大小写)的行
grep -i multiuser /etc/inittab
// 搜索etc目录下的inittab文件中不以“#”开头的行
grep -v ^# /etc/inittab
// 搜索etc目录下的inittab文件中不以“,”结尾的行
grep -v ,$ /etc/inittab