1、find查找
速度略慢
(精确、模糊)查找
实时查找
查找条件丰富
2 、指定搜索目录层级
find -maxdepth 2 指定最大递归搜索到第几层子目录,当前目录为2
find -mindepth 2 最小
3、指定搜索次序
find
命令默认递归搜索子目录文件,默认按照优先进入最后一级子目录,从里往外搜索。
find -depth 此参数是指find命令直接从最后子目录往外搜索
4、 根据文件名和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匹配整个文件路径,而非文件名称
eg:
find -name '*.txt'
find -redex正则匹配搜索匹配的是全路径
find -regex '.*\.txt$'
5、 根据属主属组查找
find -user <USERNAME> 查找属主为指定用户(UID)的文件
find -group <GRPNAME> 查找属组为指定组(GID)的文件
find -uid <UserID> 查找属主为指定的UID号的文件
find -gid <GroupID> 查找属组为指定的GID号的文件
find -nouser 查找没有属主的文件
find -nogroup 查找没有属组的文件
find /demo -uid 1001
find /demo -gid 1001
find -user root
6、 根据文件类型查找(重点)
find -type [文件类型]
支持文件类型如下
f 普通文件
d 目录文件
l 符号链接文件
s 套接字文件
b 块设备文件
c 字符设备文件
p 管道文件
7、 查找空文件或目录
find -empty 查找指定目录下空文件和空目录
8、 组合条件
-a 与;默认参数
-o 或
-not 或 ! 非
eg:查找/etc目录下conf后缀文件或者是软连接文件
find /etc -name '*.conf' -o -type l -ls
eg:查找/etc目录下非conf后缀的文件
find /etc -type f -a ! -name '*.conf' -ls
摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
使用小括号时,必须有空格隔开,而且需要\
转义
eg
:找出/etc目录下是conf后缀文件的文件
find /etc -type f -a -name '*.conf'| wc -l
find /etc ! \( ! -type f -o ! -name '*.conf' \)| wc -l
eg:
找出/etc目录下,属主不是root,且文件名不以f开头的文件
find /etc \( -not -user root -a -not -name 'f*' \) -ls
find /etc -not \( -user root -o -name 'f*' \) –ls
eg:找出不是demo用户或者xiaow用户以外用户的文件
find ! \( -user demo -o -user xiaow \)
find ! -user demo -a ! -user xiaow
9、 排除指定目录
find -path [指定目录] -a -prune -o [其他条件] 移除
eg:
查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc -path '/etc/sane.d' -a -prune -o -name "*.conf"
10 根据文件大小查找
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
eg
查找大于等于100M的文件
find / -type f \( -size +100M -o -size 100*1024*1024 \)
11、 根据时间查找
以"天"为单位
find -atime [+ / - ]day
find -mtime [+ / - ]day
find -ctime [+ / - ]day
以"分钟"为单位
find -amin [+ / - ]min
find -mmin [+ / - ]min
find -cmin [+ / - ]min
案例:
find -ctime 7 表示查找前第7天,当前日期为0开始算,也就是date-day
find -ctime 0 表示查找当前一天的文件
find -ctime +7 表示查看前7天以前的文件不包括第7天,也就是[0,date-day)
find -ctime -7 表示查看最近7天修改的文件,从当前天为-1开始算,也是就是(date-day, date]
12 根据文件权限查找
find -perm [/|-]MODE
find -perm MODE 精确权限匹配
find -perm /MODE 任何一类(u,g,o)对象的权限中只要能一位匹配即可,或的关系,+ 从CentOS 7开始淘汰
find -perm -MODE 每一类对象都必须同时拥有指定权限,与关系
0 表示没有权限
find -perm 222 精确匹配文件权限必须是222
find -perm /222 表示只要文件的属主有写权限,"或者"属组有写权限,其他用户随意都匹配
find -perm -222 表示只要文件的属主有写权限,"而且"属组有写权限,其他用户也有写权限
find -perm /7000 表示文件只要有一个特殊权限即可
13、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参数后面必须跟 \;"
14 xargs ---转化为一行显示
xargs -n 以几行为一行显示
eg:
seq 1 100 | xargs -3 ----表示1-100的数按三排显示
xargs -d --------- 定义分割符
echo “helloXhelloXhelloXhelloXhelloX” | xargs -dX -----按X分隔符,分割
xargs -i 配合{}改变xargs传入参数位置
cd /etc/ && find -name '*.conf' | xargs -i cp {} /data/
xargs -p 交互式执行命令
seq 10| xargs -p -i echo {} a