Linux中关于查找的常用指令有locate、whereis、which、find。其中which和type用于查找脚本文件名,whereis用户查找命令,locate、find用于查找文件
- which [-a] 指令
PATH目录中可以找到的命令均列出,而不只第一个被找到的命令名称。找出的指令由PATH变量影响
- whereis [-bmsu] 文件(指令)或者目录名
-b:只找二进制格式的文件
-m:只找在说明文件manual路径下的文件
-s:只找source源文件
-u:查找不在上述三个选项当中的其他特殊文件
由于which受到PATH影响,所以对于/sbin没有加入用户PATH中,用用户账号的which查找部分指令可能找不到,因此可以用whereis查找
另外whereis查找的是数据库文件(/var/lib/mlocate/),因此比直接用find查找速度快。但是数据库只定时更新(各个发行版不同,centos是一天一次),所以使用前最好先用updatedb更新数据库。
- locate [-ir] 文件部分名称
-i:忽略大小写的差异
-r:后面可接正则表达式的显示方式
同whereis一样,依据数据库对用户输入的关键字文件名查找,可以不用输入完整文件名而进行模糊查找
- find [路径] [参数] [操作]
与时间有关参数:-atime(access time )、-mtime(modify time )、-ctime(change time )
access time:代表最近一次访问文件的时间,显示一个文件的内容或运行一个脚本的时候会更新,可以用 ls -lu 查看
modify time:代表最近一次文件内容被修改的时间,可以用 ls -l 查看
change time:代表最近一次文件状态改变的时间。在写入文件,更改所有者、权限或链接设置时随 inode 的内容更改而更改。可以用 ls -lc 查看
说明:-mtime n:n天之前的“一天之内”被更改过的文件,参数 n 是 0 时表示列出24小时之内被更改过的文件;
-mtime +n:n天之前(不含n天本身)被更改过的文件名;
-mtime -n:n天之前(含n天本身)被更改过的文件名
-newer [文件名]:列出比该文件名还要新的文件名
2.与用户或用户组名相关的参数:
-uid [n]:n是用户的账号ID,这个UID记录在 /etc/passwd 里与账号名称对应的数字
-gid [n]:n是用户组名的ID,这个GID记录在/etc/group中
-user [name]:name为用户账号名称
-group [name]:name为用户组名
-nouser:寻找文件的所有者在 /etc/passwd 中不存在的文件
-nogroup:寻找文件的所有用户组在 /etc/group 中不存在的文件
3.与文件权限及名称有关的参数:
-name [filename]:查找文件名为filename的文件
-size [+-] SIZE:查找比SIZE大(+)或者小(-)的文件。size规格有:c-bytes、k-kilobytes、M-Mb、G-Gb,如 find / -size +500M
-type TYPE:查找文件类型为TYPE的,类型主要有:一般常规文件(f)、设备文件(b,c)、目录(d)、连接文件(l)、socket(s)、及FIFO(p)等属性,如 find / -type s
-perm mode:查找文件权限“刚好等于”mode的文件,这个mode为类似chmod的属性值,如 find / -perm 755 (即权限为rwxr-xr-x)
其中 -mode 为“必须要全部包括mode的权限”的文件,如查找权限为rwxr-xr-x即755的文件,使用 -perm -755,当一个文件权限为 rwxrwxrwx,即777时也会被列出来
而 +mode 为“包含任一 mode 的权限”的文件,如查找权限为rwxr-xr-x即755的文件,使用 -perm +755,当一个文件权限为 rw------- 即 600的文件也会被列出
4.其他操作
-exec 命令:将find找出的内容再进行其他命令的操作,比如 find / -size +500M -exec ls -l {} \;