1.查找/etc目录下大于1M且类型为普通文件的所有文件

代码实现:

1
find  /etc/  -size +1M -a -type  f | xargs ls -lh

执行结果:

1
2
3
[root@centos8 ~]#find /etc/ -size +1M -a -type f |xargs ls -lh
-rw-r--r--. 1 root root 8.3M Apr 5 15:17 /etc/selinux/targeted/policy/policy.31
-r--r--r-- 1 root root 9.0M Apr 29 19:43 /etc/udev/hwdb.bin

说明:上例主要用到了find的用法,大于1M用-size +1M,且用-a,普通文件用-type f;
其实这样就已经可以查找出来了,但结果不显示文件大小,想要验证是否找得对,配合xargs,将其结果传递给ls -lh,作为其参数使用。通过这个例子,可以看出,find和xargs这对黄金搭档在实践中的运用

2.打包/etc/目录下所有conf结尾的文件,压缩包名称为当天的时间,并拷贝到/usr/local/src目录备份。

代码实现:

1
[root@centos8 ~]#find /etc -iname "*conf" -a -type f | xargs tar -cJf /usr/local/src/$(date +%F).tar.xz 

执行结果:

1
2
3
4
[ root@centos8 ~]#cd /usr/local/src
[ root@centos8 src]#ll
total 7184
-rw-r--r-- 1 root root 184588 Jul 6 20:58 2020-07-06.tar.xz

说明:该例仍然是用find配合xargs,将find查到的文件,通过xargs传递给tar进行打包

3.利用sed取出ifconfig命令中本机的ipv4地址

首先看下ifconfig命令的结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@centos8 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.101 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fef7:f8f1 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f7:f8:f1 txqueuelen 1000 (Ethernet)
RX packets 4831 bytes 388776 (379.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2347 bytes 535126 (522.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 14 bytes 1544 (1.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14 bytes 1544 (1.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

可以看出,本机的ip,也就是eth0网卡的ip是10.0.0.101。用sed将该地址取出,方法就是移动到eth0行的下一行,使用正则表达式将该地址替换出即可
代码实现及执行结果:

1
2
[root@centos8 src]# ifconfig | sed -nr '/eth0/{n;s/.*inet ([0-9.]+).*/\1/p;}'
10.0.0.101

4.删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

查看fstab文件的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[ root@centos8 ~]#cat fstab
#
# /etc/fstab
# Created by anaconda on Sun Apr 5 15:12:18 2020
#
# 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=e4443d2d-19ac-42b6-a180-831f01b71252 / xfs defaults 0 0
UUID=bc10bd70-f2cb-4b4f-aa1b-4a63ac855b23 /boot ext4 defaults 1 2
UUID=99a24173-1ce6-499f-b27e-a3c370852c8d /data xfs defaults 0 0
UUID=341a1d04-0b98-4c17-b43a-dadac4bed878 swap swap defaults 0 0

删除#和#后跟的空白字符,代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[ root@centos8 ~]#sed -i -r 's/^#[[:space:]]*//' fstab
[ root@centos8 ~]#cat fstab

/etc/fstab
Created by anaconda on Sun Apr 5 15:12:18 2020

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.

After editing this file, run 'systemctl daemon-reload' to update systemd
units generated from this file.

UUID=e4443d2d-19ac-42b6-a180-831f01b71252 / xfs defaults 0 0
UUID=bc10bd70-f2cb-4b4f-aa1b-4a63ac855b23 /boot ext4 defaults 1 2
UUID=99a24173-1ce6-499f-b27e-a3c370852c8d /data xfs defaults 0 0
UUID=341a1d04-0b98-4c17-b43a-dadac4bed878 swap swap defaults 0 0

5.处理/etc/fstab路径,使用sed命令取出其目录名和基名

取目录名

先来看看目录名是什么:

1
2
[root@centos8 ~]#dirname /etc/fstab
/etc

用sed来取:

1
2
[ root@centos8 ~]#echo '/etc/fstab' | sed -nr 's#(.*)\/.*#\1#p'
/etc

取基名

先来看看基名是什么:

1
2
[root@centos8 ~]#basename /etc/fstab
fstab

用sed来取:

1
2
[ root@centos8 ~]#echo '/etc/fstab' | sed -nr 's#.*\/(.*)#\1#p'
fstab