文件查找 find:
语法:
命令 路径 选项 表达式 动作 find [path...] [options] [expression] [action]
1.以名字来查找文件
find:
-name:按名字查找(不支持正则)
-iname: 按名字查找(忽略大小写)
在/etc/下找到以.sh结尾的文件
[root@oldboyedu ~]# find /etc/ -name '*.sh' [root@oldboyedu ~]# find /etc/ -name '*.sh' -ls
2.按文件类型查找
-type
文件类型:
d:目录(directory)
f:文件(file)
c:字符设备
b:块设备
l:软链接文件
s:套接字文件(socket)
p:管道文件
[root@oldboyedu ~]# find /dev -type d -ls # 查找/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:
+:大于
:等于
-:小于
查找/目录下大于1G的所有文件 [root@oldboyedu ~]# find / -size +1G 查找/目录下等于1G的所有文件(等于好像不准,小于的也会包含) [root@oldboyedu ~]# find / -size 1G 查找一个脚本,名字带con [root@oldboyedu ~]# find / -name '*.sh' -name '*con*'
-a:多个条件同时满足
-o:或者,多个条件有一个满足即可
!:取反
# 查找一个脚本,名字不带con [root@oldboyedu ~]# find / -name '*.sh' ! -name '*con*'
4.根据时间查找文件
-mtime: # 对应修改时间
+n:寻找n天之前(当天的不算)
-n:查找n天内的文件(当天的文件算在内)
n:查找第n的文件(当天的不算)
例: find /root -mtime -7 # 查找/root下7天内的所有文件 find /root -mtime +7|xargs rm -f # 删除7天以前的所有文件 find /root -mtime +7 -delete # 删除 find /tmp/ ! -mtime -30 # !取反,查30内除外的所有文件
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 -perm 644 # 查找644权限的文件
find -perm 644 -type f # 查找644权限的文件 ls -l $(find -perm 644 -type f) # ls显示所有find查询到的结果
7.find的动作 action
-print 免费赠送的
-ls 查看文件的详细信息 ls -li
-delete 删除文件
-ok -ok {} \; # ;通过\转义, 否则会报错 会提示是否要操作, 一般像cp使用exec
-exec -exec {} \; 不会提示是否要操作(语法麻烦, 执行效率低(cp/删除为一个个拷贝), 建议用xargs连接进行cp)