shell学习之find
2016-12-20 15:48 KingSir1212 阅读(155) 评论(0) 收藏 举报1列出当前目录及子目录下所有的文件和文件夹
find .
.指定当前目录,..指定父目录,这是Unix系统中约定的用法
2根据文件名或者正则表达式进行搜索,还可以用选项-path来搜索路径
#列出当前目录下所有文本文件,选项-name的参数指定了所要匹配的字符串,相同-iname是忽略大小写字母
find . -name "*.txt"
#如果想要匹配多个条件,可以采用OR条件操作 -o
find . \( -name "*.txt" -o -name "*.pdf" \)
#解释下其中括号前后的\表示转义,防止bash解释成数组。注意括号里的内容前后都要有空格
# -path来搜索路径
find . -path "*/test/*"
3还可以使用否定参数,查找不包含txt的文件
find . ! -name "*.txt"
4基本目录尝试的查找
find . -maxdepth 1 -name "*.txt" #最大深度为1
find . -mindepth 2 -name "*.txt" #最小深度为2
5根据文件类型查找 -type
find . -type f #变通文件
find . -type l #链接文件
find . -type d #目录
6根据文件时间进行搜索 -atime 访问时间, -mtime 修改时间, -ctime 变化时间,元数据,权限修改
find . -type f -atime -7 #7天内访问过
find . -type f -atime 7 #7天前访问过
find . -type f -atime +7 #超过7天访问过
7根据文件大小进行搜索 -size
find . -type f -size +2k
find . -type f -size +2M
8删除匹配的文件 -delete
find . -type f -name "*.tst" -delete
9根据权限及用户搜索 -perm,-user
find . -type f -perm 6444
find . -type f -user oracle
10find结合执行命令 -exec
find . -type f -name "*.txt" -exec cat {} \;>all_txt_files.txt #把匹配的文件拼接到一个文件 #说明:\是转义,;表示exec语句结束
如果没有转义,被bash截断。
find . -type f -user root -exec chown oracle {} \; # 改变文件所属用户。
11find用作修剪
find . -path "*/test/xx" -prune -o -print #说明:找到xx目录,然后修剪掉,输出不包含,如果没找到则全部输出
浙公网安备 33010602011771号