find - 用于查找文件的命令。node
whichlinux
在前面已经用到该命令,须要注意的一点是,which只能用来查找PATH环境变量中出现的路径下的可执行文件。这个命令用的也是蛮多的,有时候咱们不知道某个命令的绝对路径,which 一下很容易就知道了。
whereis正则表达式
经过预先生成的一个文件列表库去查找跟给出的文件名相关的文件 如:whereis ls
locate数据库
和whereis相似,也是经过查找预先生成的文件列表库来告诉用户要查找的文件在哪里。 后边直接跟文件名。若是你的linux没有这个命令,请安装软件包 'mlocate', 可使用这个命令来安装 yum install -y mlocate ,若是你刚装上这个命令,初次使用会报错。 [root[@localhost](https://my.oschina.net/u/570656) ~] # locate passwd locate: can not open `/var/lib/mlocate/mlocate.db': No such file or directory
这是由于系统尚未生成那个文件列表库。你可使用 updatedb 命令当即生成(更新)这个库。若是你的服务器上正跑着重要的业务,那么你最好不要去运行这个命令,由于一旦运行,服务器的压力会变大。这个数据库默认状况下每周更新一次。因此你用locate命令去搜索一个文件,正好是在两次更新时间段内,那你确定是得不到结果的。你能够到/etc/updated.conf 去配置这个数据库生成(更新)的规则。 locate所搜索到的文件列表,无论是目录名仍是文件名,只要包含咱们要搜索的关键词,都会列出来,因此locate不适合精准搜索,这个命令阿铭使用的也并很少,你只要明白有这么一个工具便可,用到时再去深究其用法吧。
find服务器
语法 : find [路径] [参数] 下面介绍几个经常使用的参数 -atime +n/-n : 访问或执行时间大于/小于n天的文件 -ctime +n/-n : 写入、更改inode属性(例如更改全部者、权限或者连接)时间大于/小于n天的文件 -mtime +n/-n : 写入时间大于/小于n天的文件 -mmin +n/-n : 更改时间大于/小于n分钟的文件 示例: # find /tmp/ -mtime -1 # find /tmp/ -atime +10 # find /tmp/ -atime +1 -name filename 直接查找该文件名的文件,这个选项使用不少。 # find . -name test2 # find . -name "*.txt" //用通配时要加上双引号 -type filetype 经过文件类型查找。文件类型有 f, b, c, d, l, s 等。 f 普通文件 b 块设备文件 c 字符设备文件 d 目录 l 软链接 s socket文件 # find /tmp/ -type d # find /tmp/ -type f -size [+n/-n] 根据大小查找(单位:c k M G),其中字节不是b,而是c # find . -size +10k # find . -size -1M # find . -size 4k -perm [+/-]权限 # find . -perm 777
其余高级用法:socket
忽略大小写文件名查找: # find /home -iname abc.txt 查找全部以.txt和.pdf结尾的文件 # find . \( -name "*.txt" -o -name "*.pdf" \) 基于正则表达式匹配文件路径: # find . -regex ".*\(\.txt|\.pdf\)$" 基于正则表达式匹配文件路径(忽略大小写): # find . -iregex ".*\(\.txt|\.pdf\)$" 找出/home下不是以.txt结尾的文件: # find /home ! -name "*.txt" 限定查找目录深度:# find . -maxdepth 3 -type f
查找后再处理:工具
1)删除.net
# find . -type f -name "*.gz" -mtime +30 -exec rm -f {} \; # find . -type f -name "*.gz" -mtime +30 -ok rm {} \; # find . -type f -name "*.gz" -mtime +30 |xargs rm -f -ok和-exec行为同样,不过它会给出提示,是否执行相应的操做。
2)更名code
# find . -name "*.txt" -exec mv {} {}.bak \; # find . -name "*.txt"|xargs -i mv {} {}.bak