我是靠谱客的博主 悦耳盼望,这篇文章主要介绍linux基础之find、tar和sed用法知识点:作业练习:,现在分享给大家,希望可以做个参考。

知识点:

find

Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法

复制代码
1
2
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

总结

  1. *.tar 用 tar –xvf 解压
  2. *.gz 用 gzip -d或者gunzip 解压
  3. .tar.gz和.tgz 用 tar –xzf 解压
  4. *.bz2 用 bzip2 -d或者用bunzip2 解压
  5. *.tar.bz2用tar –xjf 解压
  6. *.Z 用 uncompress 解压
  7. *.tar.Z 用tar –xZf 解压
  8. *.rar 用 unrar e解压
  9. *.zip 用 unzip 解压

sed

Linux sed 命令是利用脚本来处理文本文件。

sed 可依照脚本的指令来处理、编辑文本文件。

Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法

复制代码
1
2
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且类型为普通文件的所有文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 知识点 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目录备份。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 知识点 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地址

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 知识点 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文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 知识点 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命令取出其目录名和基名

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 知识点 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用法知识点内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部