sed工具find工具与压缩打包工具基础命令详解

附带上课练习题与答案

17081909109536locate命令  文件查找

系统上预建的文件索引数据库/var/lib/mlocate/mlocate.db

updatedb  更新数据库

locate -i  忽略大小写

locate -n  只显示前n行

locate -r  使用正则表达式

适合搜索不经常修改的文件

find命令  实时查找文件,按指定路径搜索

考虑所搜索文件是否有可读权限问题

语法:find [OPTION]… [查找路径] [查找条件] [处理动作]

find  /etc/  -name  f1.sh    查找etc下文件名为f1.sh的文件

find  /etc/  -name  “*f1*”   包含f1的文件 要加双引号

find  /date  -inum   68     指定节点编号

find  -maxdepth 最大搜索目录深度,指定目录为第1级

find  -mindepth  最小搜索目录深度

find  -iname “文件名称”:不区分字母大小写

find  -samefile name 相同inode号的文件

find  -links  ·n 链接数为n的文件

find  -regex “PATTERN”:以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

属主、属组查找:

find  -user查找属主为指定用户(UID)的文件

find  -group 查找属组为指定组(GID)的文件

find  -uid:查找属主为指定的UID号的文件

find  -gid:查找属组为指定的GID号的文件

find  -nouser:查找没有属主的文件

find  -nogroup:查找没有属组的文件

文件类型查找:

find  -type  f: 普通文件

d: 目录文件

l: 符号链接文件

s:套接字文件

b: 块设备文件

c: 字符设备文件

p: 管道文件

空文件或目录

find  -empty   例如find  /app  -type d  -empty

文件大小来查找:

find  -size  [+|-]  #UNIT

常用单位:k, M, G,c(byte)

如:6k 表示(5k,6k]

如:-6k 表示[0,5k]

如:+6k 表示(6k,∞)

根据时间查找

以“天”为单位:                                           以分钟为单位:

-atime [+|-]#,                                               -amin

#: [#,#+1)                                                     -mmin

+#: [#+1,∞]                                                  -cmin

-#: [0,#)

-mtime

-ctime

 

根据权限查找:

-perm [/|-] 权限值

权限值: 精确权限匹配

/权限值:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰

-权限值:每一类对象都必须同时拥有指定权限,与关系

find -perm 755 会匹配权限模式恰好是755的文件

只要当任意人有写权限时,find -perm +222就会匹配

只有当每个人都有写权限时,find -perm -222才会匹配

只有当其它人(other)有写权限时,find -perm -002才会匹配

例如查找/etc目录下所有用户都没有写权限的文件

答案 find /etc ! -perm +222 -ls       不用加小括号

处理动作

-print:默认的处理动作,显示至屏幕

-ls:类似于对查找到的文件执行“ls -l”命令

-delete:删除查找到的文件

-fls file:查找到的所有文件的长格式信息保存至指定文件中

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认

-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令

{}: 用于引用查找到的文件名称自身

find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

例如
备份配置文件,添加.orig这个扩展名

find -name “*.conf” -exec cp {} {}.orig \;

提示删除存在时间超过3天以上的joe的临时文件

find /tmp -ctime +3 -user joe -ok rm {} \;

在主目录中寻找可被其它用户写入的文件

find ~ -perm -002 -exec chmod o-w {} \;

查找/data下的权限为644,后缀为sh的普通文件,增加执行权限

find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;

查看/home的目录

find /home –type d -ls

参数替换xgrgs

find和xargs格式:find | xargs COMMAND

find /sbin -perm +7000 | xargs ls –l

-o  或者

-a  与

-not ,! 非

个别使用 ()需要转义

——————————————————————-

sed工具 行编辑器  

使用时加 ‘ ‘

格式  sed [option]… ‘script’ inputfile…

script  : 地址命令

要搜寻地址一行内容不一定选择全部,可摘选

选项

sed  -n  不自动打印到屏幕    很重要

sed  -e: 多点编辑    表示可以操作多次

sed  -f :/PATH/SCRIPT_FILE: 从指定文件中读取编辑的脚本

sed  -r  :支持使用扩展正则表达式

sed  -i  .bak: 备份文件并原处编辑   如果修改加入的内容有空格在加个双引号

确定地址

不给地址将对全文进行处理

单地址:

#: 指定的行,$:最后一行

/pattern/:被此处模式所能够匹配到的每一行

地址范围:

#,#    如2,9 表示第二行到第九行

#,+#   如10,+30  表示10到40行

/pat1/,/pat2/   匹配到pat1的行到匹配到pat2的行

#,/pat1/

步进

1~2 奇数行  表示递进处理1,3,5

2~2 偶数行   同上    2,4,6

编辑命令

d : 删除匹配的行,并立即启用下一轮循环

p:打印当前模式空间内容,追加到默认输出之后

a [\]text:在指定行后面追加文本,支持使用\n实现多行追加

i [\]text:在行前面插入文本

c [\]text:替换行为单行或多行文本

w /path/somefile: 保存模式匹配的行至指定文件

r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后

=: 为模式空间中的行打印行号

!:模式空间中匹配行取反处理

例如2!d  除了第二行全删了

\表示开始,这样可以加入空格

s///:查找替换,支持使用其它分隔符,s@@@,s###

替换标记:

g: 行内全局替换   加在s///最后面

p: 显示替换成功的行

w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中 

————————————————————————–压缩解压缩工具

compress  [-dfvcVr] [-b maxbits] [file …]

-d: 解压缩,相当于uncompress

-c: 结果输出至标准输出,不删除原文件

-v: 显示详情

uncompress 解压缩

zcat file.Z >file 解压缩

gzip [OPTION]… FILE

-d: 解压缩,相当于gunzip

-c: 将 压缩或解压缩 的结果输出至标准输出 后面可以用 >

-#:1-9,指定压缩比,值越大压缩比越大

zcat:    可以查看压缩文件,标准输出可以解压缩文件

bzip2 [OPTION]… FILE …

-k: keep, 保留原文件

-d:解压缩

-#:1-9,压缩比,默认为9

bzcat:不显式解压缩的前提下查看文本文件内容

xz [OPTION]… FILE …

-k : keep, 保留原文件

-d:解压缩

-#:1-9,压缩比,默认为6

unxz file  解压xz后缀文件

xzcat: 不显式解压缩的前提下查看文本文件内容

zip/unzip 打包压缩

zip  –r  /testdir/sysconfig /etc/sysconfig/

解包解压缩

unzip  sysconfig.zip

cat  /var/log/messages | zip messages –

unzip -p  message > message

tar  加不加 – 都行

tar -cvfp

-c  用来创建打包文件定义一个打包后文件名

-f  表示后面跟个需要打包文件名

-v  查看打包过程

-r  追加文件到打包文件

-p  保留原有属性

-t   预览打包内容-x   解压缩默认当前目录  不管什么后缀都可以

-C  指定解压路径

-T  表示要打包那些文件      可以把指定的要打包文件目录放到新文件夹

-X  表示那些文件不打包      把指定不打包文件目录放到一个新文件夹

要切割的文件名  -b  10M  分割大文件为多个小文件    -d  表示分割后文件前面加前缀(相当于改名)后面跟数字,默认字母

合并 cat f1.tar* > f1.tar.gz

归档并压缩

-j:  bzip2, -z:  gzip, -J:  xz

cpio 复制文件或归档

cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件

cpio [选项] > 文件名或者设备名

cpio [选项] < 文件名或者设备名

-o 将文件拷贝打包成文件或者将文件输出到设备上

-i 解包,将打包文件解压或将设备上的备份还原到系统

-t 预览,查看文件内容或者输出到设备上的文件内容

-v 显示打包过程中的文件名称。

-d 解包生成目录,在cpio还原时,自动的建立目录

-c 一种较新的存储方式

本文是我个人上课时对老师讲的一些知识点的总结整理,有不足之处还望各位谅解,欢迎指出文中的错误,希望可以和大家共同努力共同进步。

练习题答案http://www.178linux.com/95845

5a2827f7e4b9a0abe005b1eaeece4500

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95842

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code