which 是用来搜一个命令的绝对路径
which ls 可以把ls绝对路径搜出来
它搜的话只是在一个变量下 echo $PATH 在这些目录里面去搜 类似于我们运行的命令 它是一个可执行
比如在root下我们去touch一个文档 touch hank
which hank 是不可能再那些路径中搜不到 我们可以挪到tmp目录下 挪进去之后呢 我们还是搜不到 因为他不是一个可执行的文件
我们给他加上可执行的文件 chmod a+x 再去搜索就可以搜索到了 which 搜索有一定的局限性 必须要在这些路径下 必须有执行权限才可以搜到
我们也可以用whereis 去搜pwd 可以搜到3个路径
我们用whereis 去搜hank 是搜不到的
locate 也是用来搜一些文件 直接用的话不能用 我们还要安装一个包 yum install -y mlocate
安装完了再去搜 locate ls 他会提示这个文件不存在
locate是用来记录这个我们搜索这个文件的关键词的所在一个路径的列表库 这个库默认不存在
他会每天去执行一个计划任务 每天去生成这个库 也就是说每天会去更新 只有更新到了才会找到 我们可以手动更新下updatedb
再来查看下 locate ls 可以看到很多路径包含ls 只是非常不精准 只要包含ls 就给列出来 我们搜一下hank locate hank 但是并没搜索到
我们现在去新生成一个文件1234.1
直接去搜 locate 1234.1 搜不到 只有去刷新数据库才可以搜到他 updatedb
我们要向很精准的去搜索一个文件可以用find
find 的用法很简单 有固定的格式 首先要跟一个文件路径
比如我们在tmp目录下搜索hank
find /tmp/ -name 'hank' 单引号可加可不加
如果用 find /tmp/ -name "hank*" 需要加双引号 单引号双引号都可以 *就是以hank开头的
我们也可以指定他的类型
find /tmp/ -type d 目录
find /tmp/ -type f 文件
find /tmp/ -type s
find /tmp/ -type b
find /tmp/ -type c
经常用的是:
find /tmp/ -mtime +10 mtime(更改会创建时间的)+10 大于10天的 <10就是-10 一年以内的就是-365 单位是天
find /tmp/ -atime +10
find /tmp/ -ctime +10
用mtime时间单位有点大
想找到五分钟之内的可以用mmin去实现-5 就是五分钟 +5就是大于五分钟 单位是分钟
find /tmp/ -type f -name hank 可以多个组合使用
find / -num 11221 通过inode号去找到他
也可以加管道符| 去输出给后面的组合
find /var/log -type f -mtime +30 |xargs ls 查看30天的 通常用rm比较多 删除30天的内容
如果给后面的都加一个.bak
find /tmp/ -type f |xargs -i mv {}{}.bak
转载于:https://blog.51cto.com/sgc666/1884902