查命令: which ; type
查文件: whereis 与 locate 利用数据库 ,find 扫描磁盘
which
根据$PATH变量定义的目录,来查找可执行命令,并输出完整路径
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称
但which无法查出bash内建命令如cd,这个可以通过 type cd(cd is a shell builtin)
type
type命令用来显示指定命令的类型。一个命令的类型可以是如下之一
- alias 别名
- keyword 关键字,Shell保留字
- function 函数,Shell函数
- builtin 内建命令,Shell内建命令
- file 文件,磁盘文件,外部命令
- unfound 没有找到
它是Linux系统的一种自省机制,知道了是那种类型,我们就可以针对性的获取帮助。比如内建命令可以用help命令来获取帮助,外部命令用man或者info来获取帮助。
常用参数
type命令的基本使用方式就是直接跟上命令名字。
type -a可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。
type -p只返回外部命令的信息,相当于which命令。
type -f只返回shell函数的信息。
type -t 只返回命令的类型
whereis [-bmsu] 文件或目录名
选项与参数:
-b :只找 binary 格式的文件
-m :只找在说明档 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
locate [-ir] 部分名称
选项与参数:
-i :忽略大小写的差异;
-r :后面可接正规表示法的显示方式
whereis 和 locate 比较适用找一些固有的文件
都是通过已创建的数据库 /var/lib/mlocate/的信息来进行查找
并不是真正去扫描磁盘,所以速度很快,但查找结果不一定准确
会发现可以找到已经删除的文件,或mv重命名但查出的是原文件名,或找不到刚刚创建的文件
因为mlocate,一般每天升级数据库一次,可locate mlocate,发现/etc/cron.daily/mlocate.cron
当然也可手动升级updatedb,但是扫描磁盘很慢,建议慎重
updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件;
find
-name文件
告诉find要找什么文件;要找的文件包括在引号中,可以使用通配符(*和?)
告诉find要找什么文件;要找的文件包括在引号中,可以使用通配符(*和?)
-type x
匹配所有类型为x的文件。x是c(字符特殊),b(块特殊),d(目录),p(有名管道),l(符号连接),s(套接文件)或f(一般文件)
匹配所有类型为x的文件。x是c(字符特殊),b(块特殊),d(目录),p(有名管道),l(符号连接),s(套接文件)或f(一般文件)
-user用户号
匹配所有用户序列号是前面所指定的用户序列号的文件,可以是数字型的值或用户登录名。
匹配所有用户序列号是前面所指定的用户序列号的文件,可以是数字型的值或用户登录名。
-print
显示整个文件路径和名称。一般来说,都要用-print,如果没有这个参数,则find命令进行所要求的搜索是没有显示结果的
显示整个文件路径和名称。一般来说,都要用-print,如果没有这个参数,则find命令进行所要求的搜索是没有显示结果的
find的使用实例:
$ find . -name 'my*'
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find . -name 'my*' -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
$ find . -type f -mmin -10
$ find . -name 'my*'
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find . -name 'my*' -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
$ find . -type f -mmin -10
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
[acm][min/time]
a -access ;c -changed(status) ;m -modified
min 分钟 ; time 天数
amin n 查找n分钟以前被访问过的所有文件.
atime n 查找n天以前被访问过的所有文件.
cmin n 查找n分钟以前文件状态被修改过的所有文件.
ctime n 查找n天以前文件状态被修改过的所有文件.
mmin n 查找n分钟以前文件内容被修改过的所有文件.
mtime n 查找n天以前文件内容被修改过的所有文件.
atime n 查找n天以前被访问过的所有文件.
cmin n 查找n分钟以前文件状态被修改过的所有文件.
ctime n 查找n天以前文件状态被修改过的所有文件.
mmin n 查找n分钟以前文件内容被修改过的所有文件.
mtime n 查找n天以前文件内容被修改过的所有文件.
find / -mtime 4 与 find / -mtime +/-4
--------------------------------------------->
| | | | | | | |
7 6 5 4 3 2 1 now
[root@localhost eg]# find / -name 'add.c' -exec ls -l {} \;
-rw-r--r-- 1 root root 68 May 17 14:53 /root/Documents/eg/add.c
-rw-r--r-- 1 root root 68 May 17 14:53 /root/Documents/eg/add.c
{}是代表find的结果
-exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 命令内的额外动作
;因为可能有特殊意义,所以反斜杠\跳脱特殊字符
2.find xargs
$ find / -user oracle -mmin -2 -print 1>~/x3 2>/dev/null
$ find / -name 'inventory' -type d -print 1>~/find2.t 2>/dev/null
$ find . -mmin +720 -print| xargs rm -rf #+720 720m之前, -720 表示720m以内...
嘛,要删之前最好再看一下...
$ find . -mmin +720 -print|ll
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28859270/viewspace-774995/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28859270/viewspace-774995/