是linux里面的一个实时查找工具,通过制定路径完成文件查找
find [options] ….. [查找路径] [查找条件] [处理动作]
查找路径:查找的位置,默认是当前文件夹
查找条件:制定查找的标准,文件名、大小、类型、日期等等
处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上
[root@localhost test]# mkdir -p a/{b,a}/{b,a}/{b,a}
根据文件名查找
find -name a
./a
./a/b/b/a
./a/b/a
./a/b/a/a
./a/a
./a/a/b/a
./a/a/a
./a/a/a/a
find -regex "./a"
制定搜索的层级
find -maxdepth 3 -name a
./a
./a/b/a
./a/a
./a/a/a
find /etc -name *.conf -maxdepth 2
目录 目录统配符
根据属主、属组来查找
获取用户的id: id 用户名
删除用户后,文件的属主与属组会变为被删除用户的id,再次创建用户,新建的用户的id会和删除用户的id相同,会造成文件的属主与属组变成新建用户的名称。Linux中以用户id区分用户而不是用户名。
根据文件类型 -type
空文件或者空目录
find -empty -type d # 只查当前目录下为空的目录
组合条件,默认为and
find -empty -not -type d #当前目录下为空但不是目录的
摩根定律
非(A或B)
——> 非A且非B非(A且B)
——> 非A或非B find !(-empty -a -type d)
# 不为空或部位目录
指定目录
find /etc -name *_config
/etc/ssh/ssh_config
/etc/ssh/sshd_config
path必须和prune结合使用,表是排除目录,prune:不打印
find /etc -path ‘/etc/ssh‘ -prune -name *_config
排除多个目录
find /etc \(-path ‘/etc/sane.d‘ -o -path ‘/etc/cups‘ \) -prune -name *_config
按照大小来查找
-size #
(#-1,#] 不包括#-1,包括#-size -#
[0,#-1] 包括#-1-size +#
(#,……)按照时间来查找
-atime #
[#,#+1) #天-atime -#
(0,#) #天以内的-atime +#
[#+1,….] #天以后的删除7天之前的日志,找查:
find -atime +7
find -size 2M -ok rm -rf {} \;
# {}代表找查出的文件,\;是结束符
有的命令不支持管道echo file | touch
,有的命令参数过长touch file{1,5000000}
,可用xargs解决。
echo file{1,100000} | xargs touch
echo file{1,100000} | xargs rm -rf
grep、awk、sed
Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的”模式“对目标文件逐行进行匹配检查并打印出匹配的行。
模式:由正则表达式及文本字符所编写的过滤条件
格式:grep[options]pattern[file…]
其中pattern如果需要对模式进行转换,需要使用""
,如果不需要进行转换,则使用‘’
或者“”
都可以。
option
--color=auto 对匹配到的行添加颜色,默认添加grep是别名
-v 取反
-i 不区分大小写
-n 查找的内容增加行号
-c 打印匹配到的行数
-o 只显示匹配到的文字
-q 静默模式,什么都不输出,可通过此命令判断是否查到关键字
常与echo $? 结合(echo $?:打印上一命令执行结果,有结果为0,无结果为非0。
grep -q ‘user‘ passwd
echo $?
0
-A # after 向下显示#行
-B # before 向上显示#行
—C # context 上下分别显示#行
-e 或者
grep -e ‘user‘ -e ‘root‘ passwd
-E 扩展正则表达式
-F 不使用正则表达式
-r 递归
-w 匹配整个单词
字符匹配
匹配次数
位置锚定
$
结尾^$
空行grep -v "^#" /etc/ssh/sshd_config |grep -v "^$"
显示不以#开头并且不是空行
分组
grep "\(c\|C\)at" a 其中的\全是转义字符
向后引用
grep "\(c\|C\)at.*\1" a
扩展则表达式
grep -E "(c|C)at" a
gzip [option]… file 压缩文件
默认将源文件删除,不指定压缩比参数压缩文件后缀名为.gz
-c 将压缩结果输出到屏幕,保留原来的文件
gzip -c passwd > passwd.gz
将压缩文件保留至文件中
zcat passwd > passwd.gz
bzip2 [option] file_name 压缩
xz [option] file 压缩率最高
zip [option] zipfile 要压缩的文件
tar [OPTION...] [FILE]...
归档工具,默认不压缩
tar cpvf etc.tar /etc
tar xf etc.tar -C /test
tar zcpvf etc.tar.gz /etc
tar zcpvf etc.tar.gz2 /etc # 压缩比为2
# 解压文件
tar xf etc.tar -C /test
tar zcpvf etc.tar.gz --exclude /etc/sysconfig /etc
分卷压缩,可以指定一个压缩文件有多大
split -b 指定大小 文件(只能为文件) 切割以后的名字
split -b 2M /etc/passwd passwd.tar.gz
# 切割压缩的文件
split -b 2M etc.tar.gz etc.tar.gz
-d 指定后缀为数字
-a 指定后缀几位
split -b 2M etc.tar.gz -d -a 3 etc.tar.gz
cat etc.tar.gz00[0-9] > etc.tar.gz
原文:https://www.cnblogs.com/wby-110/p/13457702.html