which
which passwd //返回结果为:/usr/bin/passwd,而不是:/etc/passwd。which命令仅仅查找可执行文件。写脚本时尽量使用绝 对路径,而查看命令的绝对路径使用which命令
which cd //得到locate /usr/bin/which: no cd in(/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:
/usr/bin:/root/bin)说明cd这个常用的命令找不到。那是因为cd是bash内置的命令。但是which默认是查找path内所规范 的目录,所以当然一定找不到。可以通过type这个命令。
---------通常先使用whereis和locate命令来检查,如果真找不到了,才以find来查找--------------
whereis 查找文件或目录
基于数据库的查找。
whereis ifconfig //结果:ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
locate 查找文件或目录
查找系统当中的所有文件。是一个基于数据库(/var/lib/mlocate)的查找。模糊查询方式。在搜索时必须要对目录有读和执行的权限。
updatedb //将系统中的所有文件更新到数据库中。一般在crontab中有这个命令,每天更新一次,所以第二天能够查到前 一天新建的文件,而往往查不到当天新建的文件。所以,要查找今天新建的文件必须手动输入执行updatedb 这条命令。
locate passwd
locate -i passwd //忽略大小写
locate -n 5 passwd //仅列出前5个匹配的记录
locate -e //制定目录
find 查找文件或目录
实时查找,不是根据数据库查找。新建的文件,可以马上搜索出来。花费的时间很多。因为find是直接查找硬盘。
find -name shunyi //默认在当前目录下搜索。如果在/home/下输入这条命令,则/home/d5000/shunyi也能被搜索 出来,而/tmp/shunyi搜索不出来。
find -iname snow.png //忽略大小写
find /home -name *.txt //在/home目录下查找
find . -name '*米泉*' //在当前目录下查找
find /home -user joe -group joe //拥有人和拥有组都是joe的文件或目录
find /home -user joe -o -user jane //或者
find -user joe not -group joe //拥有人是joe且拥有组不是joe的文件或目录
find -not \( -user joe -o -user jane \) //拥有人既不是joe也不是jane的文件或目录
find / -user joe -o uid 500
find / -perm 755 //权限是755的文件或目录
find -perm +222 //u、g、o只要有一个能写即可
find -perm -222 //u、g、o权限每一个都能写
find -size 10M //文件大小为10M
find -size +10M //文件大小大于10M
find -size -10M //文件大小小于10M
find /tmp -ctime +10 //查找10天之前数据或权限被修改过的文件
find /tmp -amin -60 //查找60分钟内被访问过的文件
对找到的文件进行处理
连接符:"-ok" 提示用户;"-exec"不提示用户。
以"space\;"结尾。
"{}"表示前面查找到的所有文件。
find -size +100M -ok mv {} /tmp/abc/ \;
find /tmp -ctime +3 -user joe -ok rm {} \; //tmp下查找修改超过3天的并且拥有人是joe的文件,然后把这些文件删除。
find ~ -perm -002 -exec chmod o-w {} \;
find /home -type d -ls //查找文件类型是目录的文件夹,并显示
find /data -type f -perm 644 -name *.sh -ok chmod 755 {} \;
补充:文件时间
-atime 文件最后一次访问的时间
-mtime 文件最后一次被修改的时间
-ctime 文件的数据或权限最后一次改变的时间
stat file //查看三个时间
more file1.txt //atime 变化,mtime、ctime不变
chmod file1.txt //ctime 变化,atime、mtime不变
vim file1.txt //atime、mtime、ctime都变化
touch file1.txt //atime、mtime、ctime都变化
-atime、-mtime、-ctime以小时为单位;-amin、-mmin、-cmin以分钟为单位。