文件查找
程序员文章站
2022-10-04 22:55:07
[toc] 文件查找 find命令的基本语法 命令+路径+选项+表达式+动作 find查找分类 1.以名字查找文件 2.文件类型查找 文件类型 d:目录(directory) f:文件(file) c:字符设备 b:块设备 l:软链接文件 s:套接字文件(socket) ......
目录
文件查找
find命令的基本语法
命令+路径+选项+表达式+动作
find查找分类
1.以名字查找文件
-name 在/etc/下找到以.sh结尾的文件 [root@oldboyedu ~]# find /etc/ -name '*.sh' [root@oldboyedu ~]# find /etc/ -name '*.sh' -ls
2.文件类型查找
文件类型
d:目录(directory)
f:文件(file)
c:字符设备
b:块设备
l:软链接文件
s:套接字文件(socket)
p:管道文件
-type 查找/etc/目录下所有带conf的文件 [root@oldboyedu ~]# find /etc/ -type f -name '*conf*' 查找当前系统中,所有的管道文件 [root@oldboyedu ~]# find / -type p /run/systemd/inhibit/1.ref /run/systemd/sessions/1.ref /run/systemd/initctl/fifo [root@oldboyedu ~]# find / -type p -ls 39101 0 prw------- 1 root root 0 jul 4 17:18 /run/systemd/inhibit/1.ref 41084 0 prw------- 1 root root 0 jul 4 17:18 /run/systemd/sessions/1.ref 21199 0 prw------- 1 root root 0 jul 4 17:18 /run/systemd/initctl/fifo
3.根据文件大小查找
-size -a:多个条件同时满足 -o:或者,多个条件有一个满足即可 !:去反 + :大于 - :小于 :等于 查找/目录下大于1g的所有文件 [root@oldboyedu ~]# find / -size +1g 查找一个脚本,名字带con [root@oldboyedu ~]# find / -name '*.sh' -name '*con*' 查找一个脚本,名字不带con [root@oldboyedu ~]# find / -name '*.sh' ! -name '*con*'
4.根据时间查找文件
-mtime: +n:寻找n天之前(当天的不算) -n:查找n天内的文件(当天的文件算在内) n:查找第n的文件(当天的不算) //创建测试文件 [root@zls ~]# for i in `seq -w 30`;do date -s 201802$i && touch file-$i;done //查找7天以前的文件(不会打印当天的文件) [root@zls ~]# find ./ -iname "file-*" -mtime +7 //查找最近7天的文件,不建议使用(会打印当天的文件) [root@zls ~]# find ./ -iname "file-*" -mtime -7 //查找第7天文件(不会打印当天的文件) [root@zls ~]# find ./ -iname "file-*" -mtime 7 //本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件 find /backup/ -iname "*.bak" -mtime +7 -delete find /backup/ -iname "*.bak" -mtime +90 -delete
5.根据用户来查找文件
-user:指定文件属主用户 -group:指定文件属组 -nouser:查找没有属主的文件 -nogroup:查找没有属组的文件 [root@oldboyedu ~]# find /home/ -user zls -a -group [root@oldboyedu ~]# find /home/ -user zls -group root [root@oldboyedu ~]# touch /home/123.txt [root@oldboyedu ~]# chown zls.root /home/123.txt [root@oldboyedu ~]# find /home/ -user zls -group root //查找没有属主 [root@zls ~]# find /home -nouser //查找没有属组 [root@zls ~]# find /home -nogroup [root@oldboyedu ~]# find /home -nogroup -nouser 注意:$() 和 `` :将引起 来的部分当成一个命令执行。
6.根据权限查找
-perm 644 :精确查找 -644:模糊查找
find处理动作
动作 | 含义 |
---|---|
打印查找到的内容(默认) | |
ls | 以长格式显示的方式打印查找到的内容 |
-delete | 删除查找到的文件(仅能删除空目录 |
-ok | 后面跟自定义shell命令(会提示是否操作 |
-exec | 后面跟自定义shell命令(标准写法-exec ;) |
//打印查询到的文件 [root@zls ~]# find /etc -name "ifcfg*" [root@zls ~]# find /etc -name "ifcfg*" -print [root@zls ~]# find /etc -name "ifcfg*" -ls //拷贝文件 [root@zls ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \; //-ok会不断提示 [root@zls ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \; //删除文件 [root@zls ~]# find /etc -name "ifcfg*" -exec rm -f {} \; [root@zls ~]# find /etc -name "ifcfg*" -delete
find结合xargs
#xargs将查找到结果一个一个的处理 [root@zls ~]# touch file.txt [root@zls ~]# find . -name "file.txt" |xargs rm -f [root@zls ~]# find . -name "file.txt" |xargs -i {} cp -rvf {} /var/tmp