find 命令
find 查找文件(文件夹)
find指令
-print (输出结果,默认)
-ls 类似于ls -lhi
根据名称查找一个文件
我记得,Linux系统中有一个文件叫redhat-release,我怎查找到它的位置。
[root@localhost ~]# find / -name "redhat-release"
/etc/redhat-release
参数
-name : 指定搜索的名称
-i : 忽略大小写
通配符
*:匹配所有(可以匹配空字符)
[] : 匹配中括号中的任意一个字符
[^] : 匹配除掉中括号中的内容之外的跟前面匹配的上的所有文件
! : 对整个搜索结果进行取反
[root@localhost ~]# find /root/ ! -name "abc[359]"
/root/
?:匹配任意一个字符(该字符不能为空)
根据文件大小查找
根据文件的体积查询出我们所需要的文件,find会自动四舍五入
参数
-a :并且(默认使用-a)
[root@localhost ~]# find /var/log -size +2k -size -10k
/var/log
-o : 或者
[root@localhost ~]# find /var/log -size -2k -o -size +10k
/var/log/tallylog
# b c (默认) w K M G
-size n (单位)
+n : 大于n个单位
-n : 小于n个单位
n : 等于n个单位
# 注:find查找同时打印出隐藏文件
# 注:n必须是整数,不能是小数
[root@localhost log]# find /root/ -size 8.8k
find: Invalid argument `8.8k’ to -size
+n : 大于n个单位的文件
按时间进行查找
**-ctime: 文件变更时间
(修改了位置 mv 包含创建时间)
atime : 访问时间(cat)
-mtime: 内容修改时间
# 正好3天以前创建的文件
[root@localhost test]# find /root/test/ -mtime +3
/root/test/
按照属性查找(-type)
格式
find 路径 -type 文件类型 指令
f(-) : 普通文件
d : 目录文件
l : 连接文件(快捷方式)
b : 设备文件
c : 字符设备文件
s : 套接字文件
p : 管道文件
[root@localhost dev]# find ./ -type b
./dm-1
find 命令
据文件的属主属组查找
选项:
-user #根据属主
-group #根据属组
-nouser #没有属主
-nogroup #没有属组
#查找属主为ops01
[root@qls ~]# find / -user ops01 -ls
201696842 0 -rw-rw---- 1 ops01 mail 0 Jul 24 09:08
#查找属主为ops01并且 属组为ops01
[root@qls ~]# find / -user ops01 -group ops01 -ls
67588770 0 drwx------ 2 ops01 ops01 83 Jul 24 09:10 /home/ops01
#没有属主
[root@qls ~]# find / -nouser -ls
201729427 0 -rw-rw---- 1 666 mail 0 Jul 21 16:47 /var/spool/mail/user02
201685422 0 -rw-rw---- 1 6666 mail 0 Jul 21 16:40 /var/spool/mail/user123
#没有属组的
[root@qls ~]# find / -nogroup -ls
134355712 0 -rw------- 1 root 1013 0 Jul 22 11:11 /var/db/sudo/lectured/qiudao
#没有属主也没有属组的
[root@qls ~]# userdel ops02
[root@qls ~]# ll data/file-26.txt
[root@qls ~]# find / \( -nouser -o -nogroup \) -ls