文章目录
find [options] [expressions] 2>/dev/null
# -nouser(无属主) -nogroup(无属组)
# -o: 逻辑或 \( expr \) -or \( expr \)
# -a: 等价于 expr expr
# -not: 等价于 !\( expr \)
# -iname: 可以使用通配符(\转义).简单的名称(无通配符的)无需加引号!
# -type: l表示链接, d:目录, f:文件; -type d -empty :空目录
# -size: 如'-size +10M': 表示大于10M的文件.c:字节,k:千字节,G:吉字节
# -mmin: 如'-mmin -120': 表示2个小时内被modify过的文件. -amin:access, -cmin:change, -mtime:以天计
# -perm: 如'-perm -4000': 表示具有setuid权限的文件
# -user: 如'-user lei': 属用户leiz的所有文件, -uid:文件所有用户的uid, -gid:文件所属组的组id, -group:文件所属组
# -maxdepth: 最大深度,1表示仅进入一层目录.
# -iregex: 如使用扩展的regex,不区分大小写: find -regextype posix-extended -iregex pattern
# -delete: 查找到后删除(若是'-type d'则仅能删除空目录)!注意,放在命令的最后,且不能与-prune一起使用!
搜索时排除某几个目录;
注意:-path后面的路径其最后不要加/
!
find / \( -path "/home/leiz" -o -path "/home/lei" \) -prune -o -name *.txt
查找完成后打印
# -ls -print -print0 -fprintf`
# -print: 无需指定,默认就会打印每一个查找到的item,并且在该item后加换行. -print0:打印时不会对每个item后加换行而是加上\0,以表示该item的结束.注意,为了保持兼容性,在与xargs配合时(-0:用null表分隔符)
# -printf format: 按格式打印,注意不会自动加\n.格式太多,参考man.
# -fprint f: 把查找到的文件的全路径名写到文件f.没有将创建,有将被truncate!
xargs
-exec
: 执行命令-ok
: 执行命令前询问
名字用引号括起来是为了防止shell路径名扩展!
find . -name "a*" -print0 -o -name b* -print0 | xargs -0 wc -l find . -name "a*" -print0 -o -name b* -exec wc -l {} \;
find . -type d -empty -name "*eadir*" -print0 |xargs -0 rm -fr "{}"