第08天 [find,压缩打包,sed]

locate
查找
	-i 不区分大小写
	-n 只列举前n个匹配项目
	-r 使用基本正则表达式
	根据数据库实时更新查找,在文件/var/lib/mlocate/mlocatedb
	如果说在终端新建立了一个文件夹如果要想生效,必须要运行updatedb,之后运行
	locate file就可以生效了。速度快,模糊查找
	建议在系统使用不高的时候使用,消耗系统性能大
	各种选项用法 -r调用表达式常用   locate -r "\.\(jpp|npg\)$"

find 
指搜索层级
	-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
	-mindepth level 最小搜索目录深度
	 find /etc -maxdepth 1 -mindepth 1  -name passwd 
先处理目录内的文件,再处理指定目录 使用此参数,文件会排列在终端前面后是目录
-depth
根据文件名和inode查找:
-name "文件名称":支持使用glob
*, ?, [], [^]
-iname "文件名称":不区分字母大小写
-inum n 按inode号查找
-samefile name 相同inode号的文件
-links n 链接数为n的文件
-regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称
根据属主、属组查找:
-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME: 查找属组为指定组(GID)的文件
-uid UserID:查找属主为指定的UID号的文件
-gid GroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
根据文件类型查找
-type TYPE
 f: 普通文件
 d: 目录文件
 l: 符号链接文件
 s:套接字文件
 b: 块设备文件
 c: 字符设备文件
 p: 管道文件
-empty 空文件或目录

示例:find /app -type d -empty
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc -path ‘/etc/sane.d’ -a –prune -o -name “*.conf”
-path 指的是这个目录,-prune指的是我取出的目录剪切掉不参与查询,或者我去搜索conf文件。
组合条件:
与:-a
或:-o
非:-not !

    atime:Access time,  最后一次访问文件(读取或执行)的时间。
    citme:Change time, 最后一次改变文件(属性)或者目录(属性)的时间。
    mtime:Modify time,    最后一次改变文件(内容)或目录(内容)的时间。

根据文件大小来查找:
-size [+|-]#UNIT
常用单位:k, M, G,c(byte)
#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)

根据时间戳:
以“天”为单位
访问时间-atime [+|-]#,
#: [#,#+1)
+#: [#+1, ∞ ]
-#: [0,#)
修改时间-mtime
最近一次属性改变时间-ctime
以“分钟”为单位
-amin
-mmin
-cmin
find perm 222 严格匹配
find perm  +222 -ls   (centos 6中这样表示)
find perm  /222 -ls 表示或者 3个权限 ,只要其中有一个符合条件的就会显示出来
find perm  -222 -ls 表示并且 ,必须满足主组其他都有w权限

dd if=/dev/zero of=sun.txt bs=1M count=1
if 代表输入文件。如果不指定if,默认就会从stdin中读取输入。
of 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。
bs 代表字节为单位的块大小。
count 代表被复制的块数。
/dev/zero 是一个字符设备,会不断返回0值字节(\0)。

-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行“ls -l”命令 find -perm /044 -ls
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对
于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性
传递给后面的命令

find 举例
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;

 查找 aa.txt 并备份为aa.txt.bak 
 $ find . -name 'aa.txt' -exec cp {} {}.bak \;
 
查询当天修改过的文件
find   ./   -mtime   -1   -type f   -exec   ls -l   {} \;


xargs
	cat list |xargs rm -f  b把前面的标准输出给后面作为参数
	seq 10 |xargs -n 2 
	echo user{1..10}|xargs -n 1 useradd

压缩
compress -c m.log > m.log.z
gzip/gunzip
gzip [OPTION]... FILE ...
-d  解压缩,相当于gunzip
-c  结果输出至标准输出,保留原文件不改变
-#  指定压缩比,#取值为1-9,值越大压缩比越大
gunzip file.gz 解压缩
zcat file.gz 不显式解压缩的前提下查看文本文件内容
示例:
gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
cat messages | gzip > m.gz
bzip2/bunzip2/bzcat
bzip2 [OPTION]... FILE ...
-k  keep, 保留原文件
-d  解压缩
-#  1-9,压缩比,默认为9
bunzip2 file.bz2 解压缩
bzcat file.bz2 不显式解压缩的前提下查看文本文件内容
xz/unxz/xzcat
xz [OPTION]... FILE ...
-k  keep, 保留原文件
-d  解压缩
-#  压缩比,取值1-9,默认为6
unxz file.xz 解压缩
xzcat file.xz 不显式解压缩的前提下查看文本文件内容
zip/unzip
打包压缩
zip –r /backup/sysconfig /etc/sysconfig/
解包解压缩
unzip sysconfig.zip
cat /var/log/messages | zip messages -
unzip -p message > message
tar工具
tar 选项 目标 源
tar(Tape ARchive,磁带归档的缩写)
tar [OPTION]...
选项
z 通过gzip 压缩或者解压
c 创建新的tar包
v 显示详细的tar包执行过程
f 指定压缩文件的名字
t 不解压查看tar包的内容
p 保持原文件原有属性
j 通过bzip2命令压缩或解压
x 解开tar包
C 指定解压的目录路径
--exclude=PATTERN 打包时排除不需要处理的文件或者是目录
X+文件名 从指定文件读取不需要处理的文件或者是目录列表 
N+日期  仅打包比指定日期新的文件,可用于增量打包备份。
(1) 创建归档,保留权限
tar -cpvf /PATH/FILE.tar FILE...
(2) 追加文件至归档: 注:不支持对压缩文件追加
tar -r -f /PATH/FILE.tar FILE...
(3) 查看归档文件中的文件列表
tar -t -f /PATH/FILE.tar
(4) 展开归档
tar -x -f /PATH/FILE.tar
tar -x -f /PATH/FILE.tar -C /PATH/
(5) 结合压缩工具实现:归档并压缩
-j: bzip2, -z: gzip, -J: xz
tar工具
-exclude 排除文件
tar zcvf /root/a3.tgz --exclude=/app/host1 --exclude=/app/host2 /app
-T 选项指定输入文件 -X 选项指定包含要排除的文件列表
tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist
split:分割一个文件为多个文件
分割大的 tar 文件为多份小文件
split -b Size –d tar-file-name prefix-name
split -b 1M –d mybackup.tgz mybackup-parts
split -b 1M mybackup.tgz mybackup-parts
合并:
cat mybackup-parts* > mybackup.tar.gz
cpio
功能:复制文件从或到归档
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以
“.cpio”或者“.tar”结尾的文件
cpio [选项] > 文件名或者设备名
cpio [选项] < 文件名或者设备名
选项
-o 将文件拷贝打包成文件或者将文件输出到设备上
-O filename 输出到指定的归档文件名
-A  向已存在的归档文件中追加文件
-i 解包,将打包文件解压或将设备上的备份还原到系统
-I filename  对指定的归档文件名解压
-t  预览,查看文件内容或者输出到设备上的文件内容
-F filename  使用指定的文件名替代标准输入或输出
-d 解包生成目录,在cpio还原时,自动的建立目录
-v 显示打包过程中的文件名称
示例
将etc目录备份:
find ./etc -print |cpio -ov >bak.cpio
将/data内容追加bak.cpio
find /data | cpio -oA -F bak.cpio
内容预览
cpio –tv < etc.cpio
解包文件
cpio –idv < etc.cpio


compress 压缩
uncpmpress 解压缩
扩展名 *.z

gzip 压缩
gunzip 解压缩
扩展名 *.gz

bzip2 压缩
bunzip2 解压缩
bzcat 查看
扩展名 *.bz2

xz 压缩
unxz 解压缩
xzcat 查看
扩展名 *.xz
解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。
zip 打包压缩
unzip 解包解压缩
扩展名 *.z

tar 打包 
扩展名 *.tar 没有被压缩过
*.tar.gz 打包后经过gzip 压缩后的扩展名
*.tar.bz2 打包后及格过bzip2压缩后的扩展名

cpio 复制文件从或归档
扩展名 *.z


对于tar指令,只需记住以下六个就够用了: 

bzip2支持的压缩/解压缩方式 

压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或者文件夹 jcvf

查询:tar -jtv -f filename.tar.bz2 

解压缩:tar -jxv -f filename.tar.bz2 -C 要将压缩文件解压缩到的目录jxvf

gzip支持的压缩/解压缩方式 

压缩:tar -zcv -f filename.tar.gz 要被压缩的文件或者文件夹 zcvf

查询:tar -ztv -f filename.tar.gz 

解压缩:tar -zxv -f filename.tar.gz -C 要将压缩文件解压缩到的目录zxvf


      -zcf:归档并调用gzip压缩
      -zxf:调用gzip解压缩并展开归档


      -jcf:归档并调用bzip2压缩
      -jxf:调用bzip解压缩并展开归档

      -Jcf:归档并调用xz压缩
      -Jxf:调用xz解压缩并展开归档
xzcat 查看

sed
参考网址https://blog.51cto.com/woyaoxuelinux/1868468
当用sed 时候先写固定格式 以免出错 sed -r 's###g' /etc/passwd
sed 常用选项:
有n 必有p
-n  不输出模式空间内容到屏幕,即不自动打印
-e  多点编辑
-f /PATH/SCRIPT_FILE  从指定文件中读取编辑脚本
-r  支持使用扩展正则表达式
-i.bak 备份文件并原处编辑
script:
'地址命令'
sed工具
地址定界:
(1) 不给地址:对全文进行处理
(2) 单地址:
#:指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
(3) 地址范围:
#,#  适用数字
#,+#
/pat1/,/pat2/  适用字母   getent passwd| sed -rn  '/^xiaoh/,/$ /p'

#,/pat1/
(4) ~:步进
1~2 奇数行
2~2 偶数行
把基数行后面加一个换行,奇数行和偶数行合并为一行
seq 10 | sed "1~2N;s/\n/ /"
sed工具
编辑命令:
d  删除模式空间匹配的行,并立即启用下一轮循环
举例:sed -i  '2d' /passwd   删除匹配到的第二行 i表示进行更改
p  打印当前模式空间内容,追加到默认输出之后
a [\]text  在指定行后面追加文本,支持使用\n实现多行追加
举例:sed '2a 666' 在第二行后页面添加666
换行记得加\     sed '2a 666\n777‘
i [\]text  在行前面插入文本
c [\]text  替换行为单行或多行文本
w /path/file 保存模式匹配的行至指定文件
举例:nl passwd |head -10 |sed -n '/root/,/nologin/ w passwd.bak'
r /path/file 读取指定文件的文本至模式空间中匹配到的行后
seq 1 5|sed '2r test.txt' 第二行后读取这个文件
=  为模式空间中的行打印行号
sed '=' /etc/passwd
sed  '=' /etc/passwd| sed 'N;s/\n/ /g'   把空格去掉
!  模式空间中匹配行取反处理
sed -n ’2!p‘   不显示第二行
sed工具
s/// 查找替换,支持使用其它分隔符,s@@@,s###
替换标记:
g  行内全局替换
p  显示替换成功的行
w /PATH/FILE  将替换成功的行保存至文件中
G 在每一行后面增加一行

分组替换[root@Centos7 ~]#echo i am oldboy teacher |sed 's#\(^.*am\) \([a-z].*\) \(tea\).*$#\1\3#g'
i amtea'

查找出单词换行
sed -r "s/[^[:alpha:]]/\n/g" /etc/init.d/functions


每一行行首增加#号
sed -r 's/.*/#&/' fstab
sed -r 's/(.*)/#\1/g' fstab

无#的行添加#
sed -r -i '/^[^#]/s@(.*)@#\1@g' a.sh

取用户
getent passwd|sed  -n -e '/^xiaoh/,/^sh/p' |sed -rn 's/^([^:]+):.*/\1/p'
`sed -nr '/^alice/,$s/^([^:]+):.*/\1/p /etc/passwd`
更改文件后缀名
ls *.txt |sed -nr 's/(.*)\..*/\1.aaa/gp
取ip方法:
ifconfig ens33|sed -n '2p'|sed -e 's/^.*inet//g' -e 's/netmask.*$//g'
ifconfig ens33|sed -n '2p'|sed -n -e 's/^.*inet//g' -e 's/netmask.*$//gp'
ifconfig ens33|sed -n '2p'|sed  's/^.*inet//g;s/netmask.*$//g'

ifconfig ens33|sed -n '2p'|sed 's/^.*inet//g;s/netmask.*$//g'
ifconfig ens33| sed -nr '2s/(^[^0-9]+)([0-9.]+)+( .*$)/\2/gp'
ifconfig ens33|sed -n '/broadcast/p'|sed -r 's@inet (.*) netmask.*@\1@'


df 取占用率
df | sed -rn '/^\/dev\/sd/s#(^[^[:space:]]+).*([[:digit:]]+)%.*#\1 \2#p'
df |sed -nr '/^\/dev\/sd/p'|sed -nr 's#([^[:space:]]+).*([0-9]+)%.*#\1 \2#p'
df |grep  '/dev/sd'  |sed -rn "s#([^[:space:]]+).* ([0-9]+)%.*#\1 \2#p"
调出misc 目录
  yum install autofs 
  systemctl start autofs
	systemctl enable autofs

参考文档https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html


替换一个文件/etc/passwd里的这root:x:0:0:root:/root:/bin/bash一行第二个root为test?
cat /etc/passwd| sed '/^root/!d'|sed 's/root/test/2'
sed -r 's/(.*)(:root:)(.*)/\1:test:\3/g'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值