概述
知识点:
find
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find path -option [ -print ] [ -exec -ok command ] {} ;
参数说明 :
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} ; —–将查到的文件执行command操作,{} 和 ;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find . -name .svn | xargs rm -rf
====================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
tar
linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。
1.命令格式:
tar[必要参数][选择参数][文件]
2.命令功能:
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
3.命令参数:
-A, --catenate 追加 tar 文件至归档
-c, --create 创建一个新归档
-r, --append 追加文件至归档结尾
-u, --update 仅追加比归档中副本更新的文件
-x, --extract, --get 从归档中解出文件
-t, --list 列出归档内容
-z, --gzip, --gunzip, --ungzip 通过 gzip 压缩归档
-j, --bzip2 通过 bzip2 压缩归档
-J, --xz 通过 xz 过滤归档
–lzip 通过 lzip 过滤归档
–lzma 通过 lzma 过滤归档
-Z, --compress, --uncompress 通过 compress 压缩归档
-v, --verbose 详细地列出处理的文件过程
-k, --keep-old-files 保留源文件不覆盖
-m, --touch 不要解压文件的修改时间
-W, --verify 在写入以后尝试校验归档
f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备,这个参数是最后一个,后面只接文件名
-b, --blocking-factor=BLOCKS 设置每个记录 BLOCKS x 512 字节
-C, --directory=DIR 改变至目录 DIR
–help 显示帮助信息
–version 显示版本信息
4.用法
压缩
- tar –cvf jpg.tar *.jpg 将目录里所有jpg文件打包成tar.jpg
- tar –czf jpg.tar.gz *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
- tar –cjf jpg.tar.bz2 *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
- tar –cZf jpg.tar.Z *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
- rar a jpg.rar *.jpg rar格式的压缩,需要先下载rar for linux
- zip jpg.zip *.jpg zip格式的压缩,需要先下载zip for linux
解压
- tar –xvf file.tar 解压 tar包
- tar -xzvf file.tar.gz 解压tar.gz
- tar -xjvf file.tar.bz2 解压 tar.bz2
- tar –xZvf file.tar.Z 解压tar.Z
- unrar e file.rar 解压rar
- unzip file.zip 解压zip
总结
- *.tar 用 tar –xvf 解压
- *.gz 用 gzip -d或者gunzip 解压
- .tar.gz和.tgz 用 tar –xzf 解压
- *.bz2 用 bzip2 -d或者用bunzip2 解压
- *.tar.bz2用tar –xjf 解压
- *.Z 用 uncompress 解压
- *.tar.Z 用tar –xZf 解压
- *.rar 用 unrar e解压
- *.zip 用 unzip 解压
sed
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
- -e
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
作业练习:
1、查找/etc目录下大于1M且类型为普通文件的所有文件
# 知识点 find
# 一步一步来,我们先找出/etc下所有普通文件
[flamenca@localhost ~]$ find /etc -type f
...
/etc/sane.d/teco2.conf
/etc/sane.d/teco3.conf
/etc/sane.d/test.conf
/etc/sane.d/u12.conf
/etc/sane.d/umax.conf
/etc/subgid-
/etc/nfs.conf
# 出来一大堆
# 但题目中还说要文件大小大于1M的普通文件
# 所以..
[root@localhost ~]# find /etc/ -type f -size +1M
/etc/udev/hwdb.bin
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.31
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/active/policy.linked
/etc/brltty/zh-tw.ctb
2、打包/etc/目录下面所有conf结尾的文件,压缩包名称为当天的时间,并拷贝到/usr/local/src目录备份。
# 知识点 tar
# conf 结尾 *.conf
# 当天时间怎么表示呢? `date +%F`
# 我们试一试
[root@localhost ~]# date +%F
2020-03-23
# 所以答案我们显而易见
# 但还是慢慢来比较稳妥
# 先打包
[root@localhost ~]# tar -cvf `date +%F`.tar /etc/*.conf
tar: Removing leading '/ ' from member names
/etc/asound.conf
/etc/autofs.conf
/etc/autofs_ldap_auth.conf
/etc/brltty.conf
/etc/cgconfig.conf
/etc/cgrules.conf
/etc/cgsnapshot_blacklist.conf
/etc/chrony.conf
/etc/dleyna-server-service.conf
/etc/dnsmasq.conf
...
# 注意:tar: Removing leading '/ ' from member names
# 这一句,是为啥出现的呢?什么意思?
# 其原因是tar默认为相对路径,使用绝对路径的话就回报这个错,可以使用-P参数(注意大写)解决这个问题
# 打包好了,我们开始复制咯
[root@localhost etc]# tar -zvcPf `date +%F`.tar.gz /etc/*.conf && cp `date +%F`.tar.gz /usr/local/src
/etc/asound.conf
/etc/autofs.conf
/etc/autofs_ldap_auth.conf
/etc/brltty.conf
/etc/cgconfig.conf
/etc/cgrules.conf
/etc/cgsnapshot_blacklist.conf
...
#检查一下
[root@localhost etc]# cd /usr/local/src
[root@localhost src]# ls
2020-03-23.tar.gz
3、利用sed 取出ifconfig命令中本机的IPv4地址
# 知识点 sed
# 这个简单,只要用好正则表达式基本答案就出来了
# 首先我们要找到那一行,并观察特征作出正则表达式
# 比如我的
[root@localhost src]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::298d:cfea:e788:42bb prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:5b:fc:1e txqueuelen 1000 (Ethernet)
RX packets 3926 bytes 891637 (870.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1109 bytes 175715 (171.5 KiB)
# ipv4的地址在第二行,在inet后面,特征是有数字有点,后面跟了一些东西,用.*表示
# 所以我们可以这样
[root@localhost src]# ifconfig ens33 |sed -nr '2s/^[^0-9]+([0-9.]+).*/1/p'
192.168.1.4
# 仔细看一下这个s参数后面的东西s/^[^0-9]+([0-9.]+).*/1/p
# 解释一下哈,我们知道前面内容^[^0-9]+([0-9.]+).*是来表示第二行内容的
# 而([0-9.]+)是代表IP地址的写法,且用括号分组了
# 之后的 /1/p 是打印这部分的内容
4、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
# 知识点 sed
# 还是老样子,写出题目要求的正则表达式内容,就做出来了
# 你看啊,其实题目要的效果就是去除#和空格,留下之后的内容,所有我们将之后的内容括号分组
# s/^#[[:space:]]+(.*)/1/
# 就这样
[root@localhost src]# sed -r 's/^#[[:space:]]+(.*)/1/' /etc/fstab
#
/etc/fstab
Created by anaconda on Thu Dec 26 14:35:01 2019
#
Accessible filesystems, by reference, are maintained under '/dev/disk'
See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=499c0046-6a79-4a41-9297-533134c65bf4 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
# 知识点 sed
# 这个简单,这个取得路径方法很简单,还是正则表达式
# 基名和目录名两块这么来写 (/.*)/(.*) 看着特抽象是不是?
# 以两个括号中间的 / 作为切入点看,右边的不就是基名,左边的都是目录名
# 咱们先取个基名吧
[root@localhost src]# echo /etc/fstab |sed -nr 's@(/.*)/(.*)@2@p'
fstab
# 格式不是 s///嘛,为了看起来清楚点,我给改成s@@@了
# 取目录名吧
[root@localhost src]# echo /etc/fstab |sed -nr 's@(/.*)/(.*)@1@p'
/etc
# 完事了嗷
最后
以上就是悦耳盼望为你收集整理的linux基础之find、tar和sed用法知识点:作业练习:的全部内容,希望文章能够帮你解决linux基础之find、tar和sed用法知识点:作业练习:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复