2023年8月3日发(作者:)

Linux(四)查找⽂件,压缩⽂件及正则匹配# find是linux⾥⾯的⼀个实时查找⼯具,通过制定路径完成⽂件查找find [options] ..... [查找路径] [查找条件] [处理动作]查找路径:查找的位置,默认是当前⽂件夹查找条件:制定查找的标准,⽂件名、⼤⼩、类型、⽇期等等处理动作:对符合条件的⽂件做什么操作,默认是输出到屏幕上## 查找条件- 根据⽂件名查找 - -name 指定名称,可以使⽤正则 - -iname 忽略⼤⼩写 - -links n 引⽤次数为n的⽂件 - -regex 后⾯跟完整路径,⽽不是⽂件名, 必须整个路径完全匹配- 制定搜索的层级 - -maxdepth level 最⼤的搜索深度,指定的⽬录为第1层 - -mindepth level 最⼩的搜索深度,包括level层- 根据属主、属组来查找 - -user username 查找属主为username的⽂件 - -group groupname 查找属组为groupname的⽂件 - -uid id 查找属主为id的⽂件 - -gid id 查找属组为id的⽂件 - -nouser 查找没有属主的⽂件 - -nogroup 查找没有属组的⽂件- 根据⽂件类型 -type - d ⽬录 - f ⽂件 - l 符号链接 - s 套接字 - b 块设备 - c 字符设备 - p 管道⽂件- 空⽂件或者空⽬录 - -empty- 条件 - 与 -a - 或 -o - ⾮ -not- 摩根定律 - ⾮(A或者B) ⾮A 且⾮B - ⾮(A且B)⾮A或⾮B- 排除⽬录 - -path- ```shell [root@localhost test]#find /etc -name *_config /etc/ssh/ssh_config /etc/ssh/sshd_config [root@localhost test]#find /etc -path /etc/ssh -name *_config ```- 按照⼤⼩来查找 - -size # (#-1,#] 不包括#-1,包括# - -size -# [0,#-1] 包括#-1 - -size +# (#,......)- 按照时间来查找 - -atime # [#,#+1) - -atime -# (0,#) - -atime +# [#+1,....] - 查找7天以后的⽂件 find -atime +7 - -mtime - -ctime - 以分钟为单位 - -amin - -mmin - -cmin## 处理动作- -print 默认的处理动作,显⽰在屏幕上- -ls 类似于ls -l 显⽰长格式- -delete 删除查找到的⽂件- -fls file 将查找的结果以长格式保存到⽂件中- -ok command {} ; 对每⼀个查找到的⽂件执⾏command命令,在执⾏命令之前要先提⽰⽤户是否要执⾏- -exec command {} ; 对查到的每⼀个⽂件执⾏command命令,不需要确认,⼀次性交给后⾯命令处理# xargs- 有的命令不⽀持管道- 命令参数过长- xargs 将管道前⾯的内容⼀条⼀条的交给后⾯命令处理- ⼀般会跟find使⽤# linux三贱客grepawksed# grepgrep [option] "模式" fileoption```SHELL--color=auto 对匹配到的⾏添加颜⾊-v 取反-i 不区分⼤⼩写-n 查找的内容增加⾏号-c 打印匹配到的⾏数-o 只显⽰匹配到的⽂字-q 静默模式 查找到是0 否则是1 echo $?-A # after 向下显⽰#⾏-B # before 向上显⽰#⾏—C # context 上下分别显⽰#⾏-e 或者 grep -e 'user' -e 'root' passwd-E 扩展正则表达式-F 不使⽤正则表达式-r 递归-w 匹配整个单词```## 正则表达式元字符- 字符匹配 - . 任意单个字符 - [] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]+ - [^] 取反 ? - [:upper:] ⼤写字母 - [:lower:] ⼩写字母 - [:alnum:] 字母和数字 - [:alpha:] ⼤⼩写字母 - [:digit:] 数字 - [:black:] 空⽩ - [:punct:] 标点符号- 匹配次数 - * 表⽰任意次数 - .* 任意字符任意次数 - ? 表⽰0或者1次 - + ⾄少⼀次 - {n} 表⽰n次 - {m,n} 最少m次,最多n次 - {n,} ⾄少n次 - {,n} ⾄多n次- 位置锚定 - ^ 开头 - $结尾 - ^$ 空⾏ ```SHELL grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 显⽰不以#开头并且不是空⾏ ```- 分组 ```SHELL grep "(c|C)at" a ```- 向后引⽤ - 1 前⾯第⼀个括号出现的内容匹配完成之后再后⾯在出现⼀次 - 2- 扩展正则表达式 - 与正则表达式的区别是不需要转义# 压缩## gzip压缩⽂件```SHELLgzip [option]... file-c 将压缩结果输出到屏幕,保留原来的⽂件gzip -c passwd > -1-9 指定压缩⽐,默认9gzid -9 -c wenjian > -d 解压zcat 不解压的情况下查看压缩⽐内的内容gunzip 解压```## bzip2bzip [option] file```SHELL直接压缩bunzip2 解压-k 保留原来的⽂件-d 解压-1-9 指定压缩⽐bzcat 不解压的情况下查看压缩包的内容```## xzxz [option] file```SHELLunxz 解压-k 保留原来的⽂件-d 解压-1-9 指定压缩⽐xzcat 不解压直接查看```## zip```shellzip [option] zipfile 要压缩的⽂件zip -r /etc/sysconfig/network-scriptsunzip ```## tar归档⼯具```SHELL归档tar cpvf /etcc 创建v 显⽰过程f 指定归档⽂件p 把原来的属性也带过来tar -r -f /etc 追加tar -t -f 查看归档⽂件内的内容tar xf 解压⽂件tar xf -C-z 使⽤gzip压缩-j 使⽤bzip2压缩-J 使⽤xz压缩--exclude 排除⽂件```## split```shellsplit -b 指定⼤⼩ ⽂件(只能为⽂件) 切割以后的名字-d 指定后缀为数字-a 指定后缀⼏位cat 切割后的⽂件 > 新⽂件```

2023年8月3日发(作者:)

Linux(四)查找⽂件,压缩⽂件及正则匹配# find是linux⾥⾯的⼀个实时查找⼯具,通过制定路径完成⽂件查找find [options] ..... [查找路径] [查找条件] [处理动作]查找路径:查找的位置,默认是当前⽂件夹查找条件:制定查找的标准,⽂件名、⼤⼩、类型、⽇期等等处理动作:对符合条件的⽂件做什么操作,默认是输出到屏幕上## 查找条件- 根据⽂件名查找 - -name 指定名称,可以使⽤正则 - -iname 忽略⼤⼩写 - -links n 引⽤次数为n的⽂件 - -regex 后⾯跟完整路径,⽽不是⽂件名, 必须整个路径完全匹配- 制定搜索的层级 - -maxdepth level 最⼤的搜索深度,指定的⽬录为第1层 - -mindepth level 最⼩的搜索深度,包括level层- 根据属主、属组来查找 - -user username 查找属主为username的⽂件 - -group groupname 查找属组为groupname的⽂件 - -uid id 查找属主为id的⽂件 - -gid id 查找属组为id的⽂件 - -nouser 查找没有属主的⽂件 - -nogroup 查找没有属组的⽂件- 根据⽂件类型 -type - d ⽬录 - f ⽂件 - l 符号链接 - s 套接字 - b 块设备 - c 字符设备 - p 管道⽂件- 空⽂件或者空⽬录 - -empty- 条件 - 与 -a - 或 -o - ⾮ -not- 摩根定律 - ⾮(A或者B) ⾮A 且⾮B - ⾮(A且B)⾮A或⾮B- 排除⽬录 - -path- ```shell [root@localhost test]#find /etc -name *_config /etc/ssh/ssh_config /etc/ssh/sshd_config [root@localhost test]#find /etc -path /etc/ssh -name *_config ```- 按照⼤⼩来查找 - -size # (#-1,#] 不包括#-1,包括# - -size -# [0,#-1] 包括#-1 - -size +# (#,......)- 按照时间来查找 - -atime # [#,#+1) - -atime -# (0,#) - -atime +# [#+1,....] - 查找7天以后的⽂件 find -atime +7 - -mtime - -ctime - 以分钟为单位 - -amin - -mmin - -cmin## 处理动作- -print 默认的处理动作,显⽰在屏幕上- -ls 类似于ls -l 显⽰长格式- -delete 删除查找到的⽂件- -fls file 将查找的结果以长格式保存到⽂件中- -ok command {} ; 对每⼀个查找到的⽂件执⾏command命令,在执⾏命令之前要先提⽰⽤户是否要执⾏- -exec command {} ; 对查到的每⼀个⽂件执⾏command命令,不需要确认,⼀次性交给后⾯命令处理# xargs- 有的命令不⽀持管道- 命令参数过长- xargs 将管道前⾯的内容⼀条⼀条的交给后⾯命令处理- ⼀般会跟find使⽤# linux三贱客grepawksed# grepgrep [option] "模式" fileoption```SHELL--color=auto 对匹配到的⾏添加颜⾊-v 取反-i 不区分⼤⼩写-n 查找的内容增加⾏号-c 打印匹配到的⾏数-o 只显⽰匹配到的⽂字-q 静默模式 查找到是0 否则是1 echo $?-A # after 向下显⽰#⾏-B # before 向上显⽰#⾏—C # context 上下分别显⽰#⾏-e 或者 grep -e 'user' -e 'root' passwd-E 扩展正则表达式-F 不使⽤正则表达式-r 递归-w 匹配整个单词```## 正则表达式元字符- 字符匹配 - . 任意单个字符 - [] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]+ - [^] 取反 ? - [:upper:] ⼤写字母 - [:lower:] ⼩写字母 - [:alnum:] 字母和数字 - [:alpha:] ⼤⼩写字母 - [:digit:] 数字 - [:black:] 空⽩ - [:punct:] 标点符号- 匹配次数 - * 表⽰任意次数 - .* 任意字符任意次数 - ? 表⽰0或者1次 - + ⾄少⼀次 - {n} 表⽰n次 - {m,n} 最少m次,最多n次 - {n,} ⾄少n次 - {,n} ⾄多n次- 位置锚定 - ^ 开头 - $结尾 - ^$ 空⾏ ```SHELL grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 显⽰不以#开头并且不是空⾏ ```- 分组 ```SHELL grep "(c|C)at" a ```- 向后引⽤ - 1 前⾯第⼀个括号出现的内容匹配完成之后再后⾯在出现⼀次 - 2- 扩展正则表达式 - 与正则表达式的区别是不需要转义# 压缩## gzip压缩⽂件```SHELLgzip [option]... file-c 将压缩结果输出到屏幕,保留原来的⽂件gzip -c passwd > -1-9 指定压缩⽐,默认9gzid -9 -c wenjian > -d 解压zcat 不解压的情况下查看压缩⽐内的内容gunzip 解压```## bzip2bzip [option] file```SHELL直接压缩bunzip2 解压-k 保留原来的⽂件-d 解压-1-9 指定压缩⽐bzcat 不解压的情况下查看压缩包的内容```## xzxz [option] file```SHELLunxz 解压-k 保留原来的⽂件-d 解压-1-9 指定压缩⽐xzcat 不解压直接查看```## zip```shellzip [option] zipfile 要压缩的⽂件zip -r /etc/sysconfig/network-scriptsunzip ```## tar归档⼯具```SHELL归档tar cpvf /etcc 创建v 显⽰过程f 指定归档⽂件p 把原来的属性也带过来tar -r -f /etc 追加tar -t -f 查看归档⽂件内的内容tar xf 解压⽂件tar xf -C-z 使⽤gzip压缩-j 使⽤bzip2压缩-J 使⽤xz压缩--exclude 排除⽂件```## split```shellsplit -b 指定⼤⼩ ⽂件(只能为⽂件) 切割以后的名字-d 指定后缀为数字-a 指定后缀⼏位cat 切割后的⽂件 > 新⽂件```