首页 > 代码库 > linux基础--文件查找
linux基础--文件查找
locate
非实时,模糊查找,查找根据全系统文件数据库进行。
updatedb:手动生成文件数据库
优点:速度快
find
实时查找,精确查找。
语法:
find [查找路径] [查找标准] [处理动作]
查找路径:默认为当前目录
查找标准:默认为指定路径下所有文件
处理动作:默认为显示
选项[查找标准]:
-name ‘FILENAME‘:对文件名做精确匹配
文件名通配*、?、[]
-iname ‘FILENAME‘:对文件名匹配不区分大小写
-regex PATTERN:基于正则表达式查找
根据文件属性查找
-user USERNAME:根据属主查找
-group GROUPNAME:根据属组查找
-uid UID:根据UID查找
-gid GID:根据GID查找
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
根据文件类型查找
-type:根据文件类型查找
f:普通文件
d:目录
s:套接字文件
c:字符设备
b:块设备
l:链接文件
p:管道设备
根据文件大小查找
-size:根据文件大小查找
[+|-]#k:查找大于#k或者小于#k的文件
根据逻辑与或非查找
-a:表示and,同时满足,默认就为与操作
-o:表示or,满足一个显示
-not:表示不满足的显示
根据时间查找
-mtime +#:查找修改时间大于#天的文件
-#:查找修改时间小于#天的文件
-atime +#:查找访问时间大于#天的文件
-ctime +#:查找状态改变时间大于#天的文件
-mmin +#:找修改时间大于#天分钟的文件
根据权限查找
-perm MODE:根据权限查找文件,使用MODE表示精确查找
-perm -mode:表示每一位权限都必须精确匹配
-perm /mode:表示9位权限中有任何一位匹配都匹配查找
find动作:
-print:默认值,显示
-ls:类似ls -l的形式显示匹配后每一个文件的详细信息
-ok COMMAND {} \; 匹配后执行命令。注:此处必须使用;为结束符,否则为语法错误,{}为文件名称占位符
-exec COMMAND {} \; 匹配后执行命令。注:此处必须使用;为结束符,否则为语法错误,{}为文件名称占位符
例:find ./ -type f -exec chmod o-w {} \;
查找当前目录下类型为文件的文件,并删除其他用户的写权限。
find ./ -mtime +7 -exec rm -rf {} \;
查找当前修改目录下时间大于7天的文件,并删除
扩展命令
xargs:从标准输入接受命令并执行
使用管道接受,不需要使用{}占位符,也无需\;结尾
例子:
find /etc -size +1M -exec echo {} >> /tmp/etc.bak \;
find /etc -size +1M |xargs echo >> /tmp/etc.bak
上述两种命令都可以实现查找/etc下大于1M的文件并写入指定文件中
本文出自 “亮公子” 博客,请务必保留此出处http://iyull.blog.51cto.com/4664834/1884907
linux基础--文件查找