文件查找

文件查找

find语法

find [路径] [选项] [表达式] [动作]

按文件类型查找-type

-type
f:可编辑的文件
d:目录
l:软链接文件
b:块设备文件
c:字符设备文件 终端
s:socket 安全套接字文件
p:管道文件

find [路径] [选项]


# 例:
[root@localhost ~]# find /run -type f
[root@localhost ~]# find /run -type s|xargs ls -l
srw-rw-rw-. 1 root root 0 Apr 14 16:29 /run/dbus/system_bus_socket
srwx------. 1 root root 0 Apr 14 16:29 /run/systemd/cgroups-agent
srw-rw-rw-. 1 root root 0 Apr 14 16:29 /run/systemd/journal/socket
[root@localhost ~]#  find /etc -type d|wc -l
596

按文件大小查找-size

-size
-:小于
+:大于
精准但是又不精准的匹配

# 例:
查找etc目录下小于1M的文件
[root@localhost ~]# find /etc/ -size -1M

-i:指定数据流的位置,将数据流放入{}中 
[root@localhost ~]# find /opt/ -size -1k |xargs -i mv {} /tmp

按文件名查找-name

-name:严格区分大小写
-iname:不区分大小写

!:取反,匹配该选项之外的所有选项

# 例:
查找/目录下名称是lza的文件
[root@localhost ~]# find / -name 'lza'
/var/spool/mail/lza
/home/lza

[root@localhost ~]# find / -name '*lza*'

按文件时间查找-mtime

# 查看三种时间 
[root@localhost ~]# stat 文件名


-atime:按文件访问时间查找
-mtime:按文件内容创建,修改时间查找
-ctime:文件属性,修改时间查找

+n:查找第n天之前的所有文件(不包括今天)
-n:查找从今天开始,n天内的所有文件

# 例:
查找opt目录下近7天的文件,!取反
[root@localhost opt]# find /opt ! -mtime -7|xargs rm -f

按文件属主和属组查找-user

-user:按文件的属主查找
-nouser:查找没有属主用户的文件

-group:按文件的属组查找
-nogroup:查找没有属组的文件

# 例:
查找etv目录下属主是root的所有文件
[root@localhost ~]# find /etc/ -user root
[root@localhost ~]# find /etc/ -group lza

按权限查找-perm

-perm

# 权限精确查找
查找当前目录下权限是222的文件
[root@localhost ~]# find ./ -perm 222 
[root@localhost ~]# find ./ -perm 644

# -权限
每个权限位上,都要包含数字权限的所有权限

查找当前目录下权限包含622权限的文件
[root@localhost ~]# find ./ -perm -622 -ls 
622 
rw--w--w-

# /权限
总共三个权限位,只要有一个权限位的权限被包含,就可以找到
[root@localhost ~]# find ./ -perm /644 -ls 
属主权限位,有一个r或者有一个w就满足条件 
属组权限位,有一个r就满足条件 
其他用户权限位,有一个r就满足条件

按深度查找-maxdepth

-maxdepth
针对目录层级查找

# 查找/etc/目录下的所有1级和2级目录 
[root@localhost ~]# find /etc -type d -maxdepth 2

多条件组合查找

-a:和,并且(默认)
-o:或者
!:取反

查找opt目录下是目录的文件,近七天修改
[root@localhost opt]# find /opt/ -type d -mtime -7 
/opt/ 
/opt/dir-24 
/opt/dir-25 
/opt/dir-26 
/opt/dir-27 
/opt/dir-28 
/opt/dir-29 
/opt/dir-30

查找opt目录下名称是dir*且名称里有0*,是文件,近七天,大于1K的文件
[root@localhost opt]# find /opt/ -name 'dir*' -name '*0' -type f -mtime -7 -size +1K

find动作

-print:打印查找到的内容到终端上(find命令默认就是打印结果 -print)

-ls:查看文件的详细信息  |xargs ls -l 或 ls -l $(find xxx) 或 ls -l 'find xxx'

-delete:删除查找到的文件(bug跟lsls看不见的,也删除不掉)并且只能删除空目录
其它删除方法: |xargs rm -rf 或 rm -rf $(find xxx) 或 rm -rf `find xxx

-ok:找到文件后,执行后面的bash命令,询问是否操作
语法:-ok 系统命令 {} \;

-exec:找到文件后,执行后面的bash命令
语法:-exec 系统命令 {} \;
find / -type f -name 'file*' -exec mv {} /tmp \;
posted @   安(za)  阅读(198)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示