
文件查找
find
格式:find [参数] [路径] [条件] [处理动作]
指定搜索目录层级
find -maxdepth 2 #指定最大递归搜索
find -mindepth 2 # 最小搜索层级
指定搜索次序
find -depth #从子文件搜索,从后往前搜索
根据文件名和inode查找
find -name filename # 默认精确查找,如:*, ?, [], [^],通配符要加双引号引起来
find -ls # 显示符合条件文件目录属性信息
find -iname filename # 忽略文件名大小写
find -inum n # 按inode号查找文件
find -samefile filename # 查找inode号相同的文件
find -links n # 链接数为n的文件
find -regex “PATTERN” # 支持正则表达式,以PATTERN匹配整个文件路径,而非文件名称
#########################################
# inode: 文件权限属性 #
# block: 文件的实际数据 #
# ll -i # 可以查询inode号 #
#########################################
根据属主属组查找
find -user <USERNAME> 查找属主为指定用户(UID)的文件
find -group <GRPNAME> 查找属组为指定组(GID)的文件
find -uid <UserID> 查找属主为指定的UID号的文件
find -gid <GroupID> 查找属组为指定的GID号的文件
find -nouser 查找没有属主的文件
find -nogroup 查找没有属组的文件
根据文件类型查找
find -type [文件类型]
支持文件类型如下
f 普通文件
d 目录文件
l 符号链接文件
s 套接字文件
b 块设备文件
c 字符设备文件
p 管道文件
查找空文件或目录
find -empty 查找指定目录下空文件和空目录
组合条件
-a 与
-o 或
! 非
排除指定目录
find -path [指定目录] -a -prune -o [其他条件]
指定目录通过-prune参数裁剪掉,移除
根据文件大小查找
find -size [+/-][大小munber] 按照指定大小范围查找文件
常用大小单位: byte, c(小写), k(小写), M(大写), G(大写),注意字母大小写,默认查找大小单位为 "k"
find -size [munber] 查找文件大小范围为 (munber -1 , munber]
find -size 5k 查找文件大小范围为 (4,5]k
find -size -[munber] 查找文件大小范围为 [0 , munber -1]
find -size -5k 查找文件大小范围为 [0,4]k
find -size +[munber] 查找文件大小范围为 ( munber , 无穷]
find -size +5k 查找文件大小范围为 (5,无穷]k
根据时间查找
以"天"为单位
find -atime [+ / - ]day
find -mtime [+ / - ]day
find -ctime [+ / - ]day
以"分钟"为单位
find -amin [+ / - ]min
find -mmin [+ / - ]min
find -cmin [+ / - ]min
根据文件权限查找
find -perm [/|-]MODE
find -perm MODE 精确权限匹配
find -perm /MODE 任何一类(u,g,o)对象的权限中只要能一位匹配即可,或的关系,+ 从CentOS 7开始淘汰
find -perm -MODE 每一类对象都必须同时拥有指定权限,与关系
0 表示没有权限
find处理动作
find -print #find命令默认处理动作参数,把查找文件打印的屏幕上
find -ls #类似于对查找到的文件执行“ls -l”命令
find -fls PATH #查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
find -delete #删除查找到的文件,不做任何提示,"慎用!"
find -ok COMMAND {} \; #对查找到的每个文件执行由COMMAND指定的命令处理,对于每个文件执行命令之前,"都会交互式要求用户确认"
find -exec COMMAND {} \; #对查找到的每个文件执行由COMMAND指定的命令处理
find命令中"{}"表示引用查找到的文件名称自身,"注意: -ok参数和-exec参数后面必须跟 \;"
xargs 默认把多行信息转化为一行显示
xargs
[root@centos7 /data ]# seq 10|xargs
1 2 3 4 5 6 7 8 9 10
xargs -n 指定接收信息以几行为一行显示
[root@centos7 /data ]# seq 10|xargs -n2
1 2
3 4
5 6
7 8
9 10
xargs -d 定义分割符
[root@centos7 /data ]# echo "nameXnameXnameXname" | xargs -dX
name name name name
xargs -i 配合{}改变xargs传入参数位置
比如: 移动文件格式是 mv 文件 移动目标目录,xargs默认把参数传入命令最后
cd /etc/ && find -name '*.conf' | xargs -i cp {} /data/
xargs -p 交互式执行命令
[root@centos7 /data ]# seq 10| xargs -p -i echo {} a
echo 1 a ?...y
1 a
echo 2 a ?...y
2 a
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 梦缘羲
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果