三、linux核心目录结构体系与第二波命令
1.linux目录结构体系
1.1 linux目录结构概述
- /根目录 存放系统信息,软件,命令。
- /usr/ 存放用户信息,软件,命令。
- 后期详细规定了/下面要有什么目录,目录作用是什么
- 规定:FHS目录结构层次标准
1.2linux根下的核心目录
-
[root@lichengbo-xuexi ~]# ll / total 20 lrwxrwxrwx. 1 root root 7 Apr 3 17:27 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 Apr 3 17:30 boot drwxr-xr-x. 20 root root 3260 Apr 10 22:33 dev drwxr-xr-x. 81 root root 8192 Apr 10 22:33 etc drwxr-xr-x. 2 root root 6 Apr 11 2018 home lrwxrwxrwx. 1 root root 7 Apr 3 17:27 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Apr 3 17:27 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 Apr 11 2018 media drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt drwxr-xr-x. 3 root root 20 Apr 6 21:16 opt dr-xr-xr-x. 124 root root 0 Apr 10 22:33 proc dr-xr-x---. 2 root root 135 Apr 3 18:16 root drwxr-xr-x. 26 root root 740 Apr 10 22:42 run lrwxrwxrwx. 1 root root 8 Apr 3 17:27 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 Apr 11 2018 srv dr-xr-xr-x. 13 root root 0 Apr 10 22:33 sys drwxrwxrwt. 13 root root 4096 Apr 10 22:42 tmp drwxr-xr-x. 13 root root 155 Apr 3 17:27 usr drwxr-xr-x. 19 root root 267 Apr 3 17:32 var
目录 |
目录含义 |
/bin => /usr/bin |
binary 二进制文件命令 |
/sbin =>/usr/sbin |
Super binary 超级命令,只有root可以使用 |
/boot |
与linux系统启动与引导相关的文件存放处:存放引导系统启动程序,系统内核镜像 |
/dev |
debice 设备文件 光盘 硬盘分区 U盘 /dev/cdrom |
/etc |
系统配置文件存放目录 |
/home |
/home/oldboy 普通用户的家目录 贫民窟 |
/root |
/root root用户的家目录 皇宫 |
/lib /lib64 |
Library 库文件(服务软件的依赖) |
/lost+found |
系统宕机 临时保存数据的位置 |
/mnt |
mount temporary 默认的一个挂载点 临时的挂载点(磁盘)临时的入口 |
/opt |
option第三方软件安装位置 |
/proc |
Procrss(进程)虚拟目录 存放的是内存中信息 进程 服务信息 内核信息 |
/sys |
虚拟目录 存放的是内存中的信息 进程 服务信息 |
/tmp |
tepm temporary临时存放文件的位置 垃圾堆 |
/usr |
user/unix software resource 存放用户安装软件 |
/var |
variable 经常变换数据 存放的位置 日志(服务日志) |
1.3 linux核心目录的核心文件概述
/etc下面
- /etc/hosts 主机ip地址与域名(主机名)对应关系
- /etc/hosts作用:ip地址与主机名、域名对应(解析)关系
- 企业级应用场景
- 应用场景01:搭建测试环境,访问测试环境的时候使用。(修改hosts)
- 应用场景02:网站集群架构的服务,他们互相访问与联机。(通过主机名互相联机与访问)
Windows+x
Windows+r
Windows hosts文件 :C:\Windows\System32\drivers\etc\hosts
- /etc/hostname 主机名
#修改主机名流程
#红帽7 8 9 及其他linux比较通用(比较新的)
[root@lichengbo-xuexi ~]# hostnamectl Static hostname: lichengbo-xuexi Icon name: computer-vm Chassis: vm Machine ID: f7f99da0d04641ee962e580fa4498131 Boot ID: d95f5a3cffb743d5b1f47d3667e3ce0e Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64 [root@lichengbo-xuexi ~]# hostnamectl set-hostname lichengbo-nb [root@lichengbo-xuexi ~]# hostnamectl Static hostname: lichengbo-nb Icon name: computer-vm Chassis: vm Machine ID: f7f99da0d04641ee962e580fa4498131 Boot ID: d95f5a3cffb743d5b1f47d3667e3ce0e Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64 [root@lichengbo-xuexi ~]# cat /etc/hostname lichengbo-nb
#通用
##1. 修改文件/etc/hostname 需要重启后生效
##2. 命令行修改 hostsname 重启后失效
- [root@lichengbo-nb ~]# hostname 查看主机名
- lichengbo-nb
- [root@lichengbo-nb ~]# hostname new 修改临时主机名
- [root@lichengbo-nb ~]# hostname
- new
ctl ctrl control 控制
C、/ect/sysconfig/network-scripts/ifcfg-ens33或ifcfg-eth0 linux网卡配置文件
重点:/ect/sysconfig/network-scripts/ifcfg-ens33 牢记需要背下来
/ect /sysconfig/network-scripts / ifcfg -ens33
/系统配置文件/系统配置/网络-脚本(配置)/(接口、网卡配置) 网卡名字
[root@lichengbo-xuexi ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=9965f5fa-a9e4-458f-a30c-221e07a448f2 DEVICE=ens33 ONBOOT=yes IPADDR=10.0.0.200 ip地址 PREFIX=24 GATEWAY=10.0.0.2 DNS1=223.5.5.5 IPV6_PRIVACY=no
#修改网卡配置文件,需要重启网卡
Systemctl restart network
- 了解/etc/issue /etc/issue.net 用户登录系统之前显示的信息
- 未来未来安全会清空文件内容
- 了解/etc/motd用户登录系统后显示的内容
- 文件内容原封不动的显示出来
- 了解/etc/fstab 开机的时候自动挂载目录。
- 了解/etc/rc.locl开机自动运行的内容放在这个文件。
#红帽7 及之后 第一次用之前 需要配置下 授予权限
chmod +x /etc/rc.d/rc/local
H、了解/etc/profile /etc/bashrc 存放用户环境变量信息
/etc/profile 存放各种系统环境变量。别名
/etc/bashrc 配置别名
小结
文件 |
含义 |
/etc/hosts |
ip地址与主机名解析关系 |
/etc/hostname |
主机名,honstnamectl 、 hostname |
/etc/sysconfig/network-scripts/ifcfg-ens33 |
ens33改为eth0.网卡配置文件。 |
/etc/issue /etc/issue.net |
|
/etc/motd |
|
/etc/fstab |
|
/etc/rc.locall |
开机自启动配置文件 |
/etc/profile |
|
/etc/bashrc |
/var目录经常变化的内容,日志
- /var/log/messages
系统通用日志,各种信息默认都会写入到这个文件中。 - /var/log/secure
用户安全日志,用户登录信息(记录)
tail -f 显示文件实时更新
/proc/ 下面核心文件
- 系统服务信息,进程信息,内核信息,系统信息
- A. /proc/cpuinfo cpu信息
[root@lichengbo-nb ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 154 model name : 12th Gen Intel(R) Core(TM) i7-12700H stepping : 3 microcode : 0xffffffff cpu MHz : 2688.011 cache size : 24576 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 31 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip gfni vaes vpclmulqdq spec_ctrl intel_stibp flush_l1d arch_capabilities bogomips : 5376.02 clflush size : 64 cache_alignment : 64 address sizes : 45 bits physical, 48 bits virtual power management: processor : 0 #CPU核心的 id 从0开始 physical id : 0 #物理cup的 id号 从0开始
看CUP的命令: lscup
[root@lichengbo-nb ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 154 Model name: 12th Gen Intel(R) Core(TM) i7-12700H Stepping: 3 CPU MHz: 2688.011 BogoMIPS: 5376.02 Hypervisor vendor: VMware Virtualization type: full L1d cache: 48K L1i cache: 32K L2 cache: 1280K L3 cache: 24576K NUMA node0 CPU(s): 0 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip gfni vaes vpclmulqdq spec_ctrl intel_stibp flush_l1d arch_capabilities
CPU(s): 1 #cpu核心总数
Socket(s): 1 #cpu个数
B、/proc/meminfo 内存信息
[root@lichengbo-nb ~]# cat /proc/meminfo MemTotal: 2027868 kB 占用内存 MemFree: 1683484 kB 可用内存
C、了解:/proc/mounts磁盘挂载信息
D、/proc/diskstats 磁盘使用情况的信息
df
[root@lichengbo-nb ~]# df -h 以人类可读的方式查看磁盘信息 Filesystem Size Used Avail Use% Mounted on devtmpfs 979M 0 979M 0% /dev tmpfs 991M 0 991M 0% /dev/shm tmpfs 991M 9.6M 981M 1% /run tmpfs 991M 0 991M 0% /sys/fs/cgroup /dev/mapper/centos_lichengbo--xuexi-root 50G 1.9G 49G 4% / /dev/sda1 1014M 138M 877M 14% /boot /dev/mapper/centos_lichengbo--xuexi-home 47G 33M 47G 1% /home tmpfs 199M 0 199M 0% /run/user/0
E、了解:/proc/loadavg 系统负载信息
1.3.4 了解/usr/local 编译安装默认的位置。
2.绝对路径与相对路径
- 绝对路径:从根开始的路径。推荐使用
- /erc/hosts
- 相对路径:不是从根开始的路径。相对于当前路径
- cd /etc 然后执行ls -l hosts
3.又一波命令来袭
3.1 查看文件内容 cat
选项 |
作用 |
基本用法 cat文件 |
查看文件内容 |
-n |
查看文件时显示行号 number |
[root@lichengbo-nb ~]# cat -n /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10 operator:x:11:0:operator:/root:/sbin/nologin 11 games:x:12:100:games:/usr/games:/sbin/nologin 12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 13 nobody:x:99:99:Nobody:/:/sbin/nologin 14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin 15 dbus:x:81:81:System message bus:/:/sbin/nologin 16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin 17 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin 18 abrt:x:173:173::/etc/abrt:/sbin/nologin 19 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 20 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
3.2 head 头,显示文件的开头几行,默认显示前10行
选项 |
作用 |
-n |
指定行数 -n5 |
#案例01查看文件前10行
[root@lichengbo-nb ~]# head /etc/psaat head: cannot open ‘/etc/psaat’ for reading: No such file or directory [root@lichengbo-nb ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
#案例02显示前5行
方法一、
[root@lichengbo-nb ~]# head -n5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
方法二、
[root@lichengbo-nb ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
3.3 tail显示文件最后的几行,默认显示最后10行
选项 |
作用 |
-n |
指定行数 -n5 |
-f |
显示文件的实时更新 |
#案例01 显示文件最后10行 显示文件最后5行
[root@lichengbo-nb ~]# tail /etc/passwd games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
显示最后五行
[root@lichengbo-nb ~]# tail -5 /etc/passwd polkitd:x:999:998:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
#案例02 显示文件的实时更新。(未来查看日志必备)
tail -f /oldboy/oldboy.txt
[root@lichengbo-nb oldboy]# tail -f oldboy.txt lidao lidao 1 2 3 4 5 6 7 8 9 10
3.4 less 按页查看文件内容,到最后一行不会退出。
- G到达最后一行
- gg到文件第一行
- 向下翻页 空格
- 向下翻页b或ctrf+b
- Q退出
3.5 more 按页查看文件内容,到最后一行会退出
- 不支持快捷键
小结:
查看日志四剑客,head、tail、less、more
面试题说出查看文件内容命令:vi、cat、head、tail、less、more………
企业故障案例:开发人员在linux中查看日志,vi查看日志,发现系统内存不足?
- 原因:vi编辑大文件的时候,占用内存,导致内存不足。
- 解决:结束进程,统一培训开发人员,linux基础操作
3.6 wc 统计行数
选项 |
作用 |
-l |
line 只显示行数 |
#案例01 统计 /etc/serviec有多少行
[root@lichengbo-nb oldboy]# wc /etc/services 11176 61033 670293 /etc/services [root@lichengbo-nb oldboy]# wc -l /etc/services 11176 /etc/services
#案例02 企业应用案例,通过wc命令,统计次数,出现了多少个。是否出现。
##统计/下第一级目录和文件数量
[root@lichengbo-nb /]# ls -l | wc -l 21
| 管道 把前一个命令的结果,传递给后一个命令使用。 类似于接力棒。
##未来统计用户数量,统计进程数量,统计XXX数量。
3.7 which 查询命令的绝对路径。
3.8whereis 查询命令的绝对路径,命令相关文件
3.7 3.8 案例01
[root@lichengbo-nb ~]# which tail tailf /usr/bin/tail /usr/bin/tailf [root@lichengbo-nb ~]# whereis tail tailf tail: /usr/bin/tail /usr/share/man/man1/tail.1.gz tailf: /usr/bin/tailf /usr/share/man/man1/tailf.1.gz [root@lichengbo-nb ~]# whereis -b tail tailf tail: /usr/bin/tail tailf: /usr/bin/tailf
3.9 diff 查询两个文件的区别。
3.10vimdiff 查询两个文件的区别。
3.9 3.10#案例01 对比ifcfg-ens33修改前后的内容
[root@lichengbo-nb ~]# diff /etc/sysconfig/network-scripts/ifcfg-ens33 /oldboy/ifcfg-ens33 1a2 > LIDAO=lichengbo 16c17 < IPADDR=10.0.0.200 --- > IPADDR=10.0.0.202 20d20 < IPV6_PRIVACY=no
a表示append增加内容了
c表示 change 这样内容被修改
d表示delete 删除了行
yum install -y vim
4.Linux必备优化yum源优化
- yum源 Linux下载软件地方。软件仓库。
- curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstatiotop iftop htop unzip nc nmap telent bc psmisc httpd-tools bind-utils nethogs expect
总结:
- 目录结构
- 根下面的核心目录:/etc /proc /usr /var /tmp /root /home
- Linux系统核心文件:/etc/hosts /etc/hostname 及如修改查看主机名
网卡配置文件
/var/ /proc: /var/log/messages /var/log/secure /proc/cpuinfo
/proc/meminfo /proc/diskstats - 绝对路径与相对路径
- cat、head、tail、less、more、which、shereis、diff、vimdiff、df -h、lscpu、tailf
- 案例:/etc/hosts案例,wc -l 案例,vi编辑日志故障案例。
二、文件与目录结构第三波进阶命令
排序与去重命令
1.1 sort 用于排序的命令
默认是按照字符顺序对比,从左到右一位一位对比。
选项 |
作用 |
Sort 文件 |
|
-n |
对数字排序 |
-r |
逆序排序 |
-k |
指定某列 -k1 指定多列 -k1 -k2 -k1.1 根据第一列的第一个字符进行排序 |
-t |
指定分隔符 |
案例01 对数字进行排序
[root@lichengbo-nb oldboy]# sort -n sort.txt 1 2 5 12 12 30 54 56 890 3884 [root@lichengbo-nb oldboy]# cat sort.txt 12 56 890 1 12 3884 30 54 2
案例02 对数字逆序(降序)排序
[root@lichengbo-nb oldboy]# sort -rn sort.txt 3884 890 56 54 30 12 12 5 2 1
案例 03 对某一列进行排序
[root@lichengbo-nb oldboy]# cat sort-v2.txt adsada 9 asda 19 dasdasd 89 dasda 13 davokf 29 [root@lichengbo-nb oldboy]# sort -k2 sort-v2.txt dasda 13 asda 19 davokf 29 dasdasd 89 adsada 9 [root@lichengbo-nb oldboy]# sort -nk2 sort-v2.txt adsada 9 dasda 13 asda 19 davokf 29 dasdasd 89 [root@lichengbo-nb oldboy]# sort -nrk2 sort-v2.txt dasdasd 89 davokf 29 asda 19 dasda 13 adsada 9
企业面试题案例对 /etc目录下面文件、目录、大小排序(取前10)
显示大小 ls -l 排序 sort 取前10个 head 257 ls -l /etc 排序 258 ls -l /etc | sort -nk5 259 ls -l /etc | sort -nrk5 取前10个 260 ls -l /etc | sort -nrk5 | head
案例 04 想优先对第二列排序,如果第二列有一样的则对第四列排序
[root@lichengbo-nb ~]# sort -rn -k2 -k4 /oldboy/lichengbo.txt | column -t old4 38 linux学校 500 old2 33 linux学校 30330 old1 22 linux学校 30000 oldboy 20 linux学校 20000 oldli 18 linux学校 21000 old3 9 linux学校 30029 old5 9 linux学校 20210
案例05 以点为分隔符按照第三列,然后第四列进行从小到大排序。
sort -t‘.’ -nr -k3 -k4,4 sort-ip.txt
uniq (unique)(去重并显示次数)合并文件中相邻的相同的行,同时可以显示次数。
选项 |
作用 |
-c |
去重并统计次数 |
案例 01 统计文件中uniq.txt,每个名字出现的次数(去重并显示次数)
[root@lichengbo-nb oldboy]# uniq uniq.txt oldboy lidao smile blood [root@lichengbo-nb oldboy]# uniq -c uniq.txt 6 oldboy 7 lidao 6 smile 4 blood
案例 02 统计文件中uniq.txt,每个名字出现的次数(去重并显示次数)
[root@lichengbo-nb oldboy]# sort uniq-2.txt | uniq -c 5 blood 6 lidao 9 oldboy 9 smile
企业案例:通过分析工具得出攻击破解你系统密码的ip列表,分析每个ip的攻击次数
- (对ip去重并统计次数)
- 对ip列表先排序 sort
- 然后通过uniq -c 显示次数
- 对重复的次数再次排序
- 取出次数最多的前10个
-
[root@lichengbo-nb oldboy]# sort failed-ip.txt | uniq -c | sort -rn | head 12049 58.220.223.62 10856 112.64.171.98 1982 114.83.184.139 1662 117.136.66.10 1318 115.29.245.13 961 223.104.5.197 957 116.216.0.60 939 180.111.48.14 871 223.104.5.202 869 223.104.4.139
1、对ip列表先排序 sort
sort failed-ip.txt | head -50
2、然后通过uniq -c 显示次数
sort failed-ip.txt | uniq -c
3、对重复的次数再次排序
sort failed-ip.txt | uniq -c | sort -n
4、取出次数最多的前10个
sort failed-ip.txt | uniq -c | sort -rn | head
2.时间日期类命令
2.1 date 按照指定格式显示
选项 |
作用 |
+ |
显示指定格式的信息 +%F年月日 +%T时分秒 +%w周几 |
-d |
根据描述显示指定的日期和时间 |
-s |
Set 修改日期 |
案例01 按照指定格式显示日期
[root@lichengbo-nb oldboy]# date Sun Apr 16 00:36:41 CST 2023
显示 年-月-日
[root@lichengbo-nb oldboy]# date +%F full date 完整的日期 2023-04-16
显示 时-分-秒
[root@lichengbo-nb oldboy]# date +%T time 00:40:42
显示 周几
[root@lichengbo-nb oldboy]# date +%w week 0
只显示年或月或日
[root@lichengbo-nb oldboy]# date +%F 2023-04-16 [root@lichengbo-nb oldboy]# date +%y-%m-%d 23-04-16 [root@lichengbo-nb oldboy]# date +%Y-%m-%d 2023-04-16 [root@lichengbo-nb oldboy]#
+%F 等于 +%Y-%m-%d %y是年的后两位
[root@lichengbo-nb ~]# date +%F 2023-05-02 [root@lichengbo-nb ~]# date +%y 23
+%T 等于 +%H:%M:%S
[root@lichengbo-nb oldboy]# date +%T 00:51:04 [root@lichengbo-nb oldboy]# date +%H:%M:%S 00:51:22 [root@lichengbo-nb oldboy]#
案例02 按照指定格式显示日期,年-月-日___小时____周几
[root@lichengbo-nb oldboy]# date +%F_%H_%w 2023-04-16_00_0
案例 03 显示2天前的日期,按照年月日
[root@lichengbo-nb oldboy]# date -d '-2day' Fri Apr 14 00:57:01 CST 2023 [root@lichengbo-nb oldboy]# date -d '-2day' +%F 2023-04-14
案例03 修改日期为20230415
[root@lichengbo-nb oldboy]# date -s '20240416' Tue Apr 16 00:00:00 CST 2024 [root@lichengbo-nb oldboy]# date -s '20230415' Sat Apr 15 00:00:00 CST 2023 [root@lichengbo-nb oldboy]#
2.2 nepdate 根据互联网的时间服务器自动同步时间
yum install -y ntpdate 进行安装
ntpdate 互联网时间服务地址
互联网开放时间服务器:
ntp1.aliyun.com
time,nist.gov
time.windows.com
chrony时间同步工具,服务
2.3 特殊符号` `反引号
优先执行反引号里面的内容,然后执行其他命令
` `与&()作用与用法一样
案例 01 作用展示
[root@lichengbo-nb oldboy]# which mkdir /usr/bin/mkdir [root@lichengbo-nb oldboy]# ll /usr/bin/mkdir -rwxr-xr-x. 1 root root 79768 Aug 20 2019 /usr/bin/mkdir [root@lichengbo-nb oldboy]# [root@lichengbo-nb oldboy]# ll `which mkdir` -rwxr-xr-x. 1 root root 79768 Aug 20 2019 /usr/bin/mkdir [root@lichengbo-nb oldboy]#
案例 02 工作案例 创建文件oldboy_2023-04-15.txt
[root@lichengbo-nb oldboy]# touch oldboy_2023-04-15.txt [root@lichengbo-nb oldboy]# ll oldboy_2023-04-15.txt -rw-r--r--. 1 root root 0 Apr 15 01:23 oldboy_2023-04-15.txt [root@lichengbo-nb oldboy]# rm -f oldboy_2023-04-15.txt [root@lichengbo-nb oldboy]# ll total 2372 -rw-r--r--. 1 root root 2398089 Mar 31 02:55 failed-ip.txt -rw-r--r--. 1 root root 356 Apr 11 23:29 ifcfg-ens33 -rw-r--r--. 1 root root 181 Apr 15 2023 lichengbo.txt -rw-r--r--. 1 root root 33 Apr 11 22:41 oldboy.txt -rw-r--r--. 1 root root 31 Apr 15 2023 sort.txt -rw-r--r--. 1 root root 58 Apr 15 2023 sort-v2.txt -rw-r--r--. 1 root root 183 Apr 16 2023 uniq-2.txt -rw-r--r--. 1 root root 144 Apr 16 2023 uniq.txt [root@lichengbo-nb oldboy]# touch oldboy_`date +%F`.txt [root@lichengbo-nb oldboy]# ll total 2372 -rw-r--r--. 1 root root 2398089 Mar 31 02:55 failed-ip.txt -rw-r--r--. 1 root root 356 Apr 11 23:29 ifcfg-ens33 -rw-r--r--. 1 root root 181 Apr 15 2023 lichengbo.txt -rw-r--r--. 1 root root 0 Apr 15 01:26 oldboy_2023-04-15.txt -rw-r--r--. 1 root root 33 Apr 11 22:41 oldboy.txt -rw-r--r--. 1 root root 31 Apr 15 2023 sort.txt -rw-r--r--. 1 root root 58 Apr 15 2023 sort-v2.txt -rw-r--r--. 1 root root 183 Apr 16 2023 uniq-2.txt -rw-r--r--. 1 root root 144 Apr 16 2023 uniq.txt
2.4 vim
- vi vim 区别
- vim工作模式
- vim快捷键
- 控制光标
- 复制粘贴删除
- 搜索查找
- 替换与其他功能
- 批量处理功能
vi vim 区别:
共同点 |
区别 |
|
vi |
编辑文件 |
基础版本的编辑器 |
vim |
编辑文件 |
VIM - Vi Improved vi的升级,支持高级功能 |
vi vim 工作模式:
vim快捷键:
- 环境准备
- 控制光标:
上下左右键
移动光标到行结尾:$
移动光标到行开头:0或者^
把光标移动到文件的最后一行:G
把光标移动到文件的第一行:gg
把光标移动到文件的指定行:100gg
3)复制粘贴删除:
复制当前行:yy
粘贴: p
剪切当前行:dd
4)搜索查找:
搜索想要的内容: /内容
继续向下搜索:n
继续向上搜索:N
5)替换与其他功能
:%s#oldboy#lidao#g 把oldboy替换成lidao
6)批量处理功能
批量删除多行内容:2dd
Shift+v然后选择你要删除的多行内容 d删除即可
批量伤处开头字符:carl+v选择删除的内容 d删除即可
批量增加内容:ctrl+v选择咬批量增加的地方。按shift+i输入内容 按esc结束
7)其他快捷键
撤销:u
临时取消高亮显示: :noh
显示行号:set nu
取消行号:set nonu
8)编辑功能
在当下插入一个空行并进入编辑模式:o
删除光标所在位置到行尾的内容并进入编辑模式:c(大写字母C)
快速到达行尾并进入编辑模式:A(大写)
总结:
- Sort,unip 排序去重
- date,nepdate 时间日期
- 特殊符号``
- vim的快捷键,文件编辑。
别名
3.1设置别名
姓名:刘同学 小名:梅有吧
别名:一个人的呢称或爱称。Liunx给命令设置了一个呢称或快捷键。
应用场景:
- 给危险命令设置防护。
- 方便,给复杂命令,较长路径设置快捷通道。
极速上手指南:
给rm设置别名,只要运行rm屏幕提示:请不要使用rm命令
确定需要使用的别名。
分析:
给那个命令设置别名 rm
设置什么内容的别名。显示一句话:请不要使用rm命令
别名设置格式:
alias ll='ls -l --color=auto'
alias 别名=’命令’
例子:alias rm=’ehco 请不要是用rm命令
临时取消别名:
命令据对路径 /bin/rm -f oldboy.txt
命令前加个撬棍 \rm -f oldboy.txt
3.2 别名永久生效
方法1: 仅root用户生效
[root@lichengbo-nb ~]# cat ~/.bashrc # .bashrc # User specific aliases and functions #alias rm='rm -i' #alias rm=’ehco 请不要使用rm命令 alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
方法二:所有用户生效,选择这个(熟练掌握)
如果你设置的是rm,cp,mv的别名 需要修改~/.bashrc
[root@lichengbo-nb ~]# cat ~/.bashrc # .bashrc # User specific aliases and functions #alias rm='rm -i' #注释rm的行 alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
修改系统别名的配置文件/etc/profile
修改这个文件内容,把别名设置命令写入结尾。
查看结果:
[root@lichengbo-nb ~]# tail -3 /etc/profile unset i unset -f pathmunge alias rm=’ehco 请不要使用rm命令’
生效: source /etc/profile
3.3小结:
配置别名:
- 命令行配置:alias 别名=’命令或脚本’
- 永久生效放文件:vim /etc/profile 与生效
三剑客grep
4.1 grep概述
过滤,筛选
帮助我们过滤筛选出我们想要的内容或排除不想要的内容。
4.2 选项
选项 |
作用 |
基本格式grep’你想要找的内容’ 文件 |
|
-n |
显示行号 |
-v |
取反、排除 |
-i |
过滤时不区分大小写(了解就行) |
#案例01 在/etc/passwd中过滤出包含root的行
[root@lichengbo-nb ~]# grep 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
#案例02 过滤的时候加上行号
[root@lichengbo-nb ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
#案例03 排除/etc/passwd文件中包含bash的行
[root@lichengbo-nb ~]# grep -v 'bash' /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin
#企业应用案例04 ps -ef是用来显示系统进程的命令,类似与任务管理器,过滤出叫sshd的进程。
[root@lichengbo-nb ~]# ps -ef | grep 'sshd' root 1497 1 0 21:40 ? 00:00:00 /usr/sbin/sshd -D root 1899 1497 0 22:54 ? 00:00:00 sshd: root@pts/0 root 2002 1903 0 23:32 pts/0 00:00:00 grep --color=auto sshd
指令补充
5.1seq 生成数字序列
选项 |
|
-w |
等宽数字位数相等。不足加0 |
#案例 01 显示指定范围的数字
[root@lichengbo-nb ~]# seq 10 1 2 3 4 5 6 7 8 9 10 [root@lichengbo-nb ~]# seq 2 10 2 3 4 5 6 7 8 9 10 [root@lichengbo-nb ~]# seq 2 3 10 2 5 8
#案例02 生成的数字位数保持一致
[root@lichengbo-nb ~]# seq -w 10 01 02 03 04 05 06 07 08 09 10
5.2dos2unix windows和linux文件的格式转换 (了解)
- dos(windows文件格式)转换为linux格式,本质转换的是文件的回车换行符号。
- 应用场景:
- 在windows下面书写脚本(代码),上传到linux使用与执行,执行失败。
- dos2unix转换下这个文件,然后重新执行即可
管道重定向
- | 管道 传递数据,把管道前面的命令的结果传递给管道之后。 传递的只是普通的字符,不是参数。(find处可以了解)
- 重定向符号:改变数据流向
- 把命令的输出写入到文件中
- > 标准输出重定向:先清空在写内容
- >>标准输出追加重定向:把数据追加文件的末尾。
打包压缩三剑客
7.1概述
压缩命令 |
应用场景 |
特点 |
tar |
Linux最长用的压缩命令,用于备份。备份或压缩的首选 |
|
gzip |
配合其他命令的压缩,未来数据库备份中使用。 |
|
zip/unzip |
一般用于解压来自于windows的zip格式的压缩包。 |
7.2 tar
- 打包压缩
- Windows:压缩
- Linux:打包(文件集中在一起)压缩(解压空间)
tar |
||
创建压缩包 |
tar zcvf /tmp/etc.tar.gz /etc tar zcf /tmp/etc.tar.gz /etc/ |
c创建 |
查看压缩包 |
tar ztvf /tmp/etc.tar.gz tar tf /tmp/etc.tar.gz |
list 查看 |
解压 |
tar zxvf /tmp/etc.tar.gz /etc tar xf /tmp/etc.tar.gz /etc |
|
解压到指定目录 |
tar xf /tmp/etc.tar.gz /etc -C /opt/ |
解压到指定目录 |
排除(了解) |
--exclude |
- 创建压缩包
tar |
选项 |
压缩包的名字和位置 |
被压缩的文件或目录 |
tar |
zcvf |
/tmp/etc.tar.gz |
/etc |
案例01 打包压缩/etc/目录,放在/tmp/etc.tar.gz
[root@lichengbo-nb ~]# ll -h /tmp total 11M -rw-r--r--. 1 root root 11M Apr 18 22:09 etc.tar.gz
c create 打包 通过tar命令进行打包
z gzip 压缩 通过gzip工具进行压缩 tar.gz
v verbose x显示过程
f file 指定压缩包 选项在最后
2)查看压缩包
命令 |
选项 |
压缩包的名字和位置 |
tar |
ztvf |
/tmp/etc.tar.gz |
tar |
tf |
/tmp/etc.tar.gz |
案例02 查看/tmp/etc.tar.gz压缩包的内容
tar ztvf /tmp/etc.tar.gz
tar tf /tmp/etc.tar.gz
3)解压
命令 |
选项 |
压缩包的名字和位置 |
tar |
zxvf |
/tmp/etc.tar.gz |
tar |
Xf |
/tmp/etc.tar.gz |
案例03 解压/tmp/etc.tar.gz压缩包的内容
tar zxvf /tmp/etc.tar.gz
tar xf /tmp/etc.tar.gz
4)补充
案例04 解压到指定目录
[root@lichengbo-nb tmp]# ll /opt total 0 drwxr-xr-x. 10 root root 150 Apr 6 21:16 oldboy [root@lichengbo-nb tmp]# tar xf /tmp/etc.tar.gz -C /opt [root@lichengbo-nb tmp]# ll /opt total 12 drwxr-xr-x. 82 root root 8192 Apr 18 21:24 etc drwxr-xr-x. 10 root root 150 Apr 6 21:16 oldboy [root@lichengbo-nb tmp]#
5)不同类型的压缩包
tar.gz tar打包 gzip进行压缩
tar.bz2 tar打包 bzip2进行压缩
6)tar创建压缩包的灵异提示
tar命令的保护机制
tar:Removing leading ‘/’ from member names
删除 开头 根目录 压缩包中的文件名
tar命令打包压缩的时候会去掉绝对路径的开头的根,变化为相对路径。
如果用户强制关闭这个功能,压缩包里面会带绝对路径,解压的时候会有可能覆盖源文件。
注:避免这个提示,可以使用相对路径来打包
7.3 gzip
案例01 压缩
[root@lichengbo-nb oldboy]# gzip oldboy.txt [root@lichengbo-nb oldboy]# ll -h oldboy.txt ls: cannot access oldboy.txt: No such file or directory [root@lichengbo-nb oldboy]# ll -h oldboy.txt.gz -rw-r--r--. 1 root root 1.9K Apr 18 22:54 oldboy.txt.gz [root@lichengbo-nb oldboy]#
案例02 解压
[root@lichengbo-nb oldboy]# gzip -d oldboy.txt.gz [root@lichengbo-nb oldboy]# ll -h oldboy.txt -rw-r--r--. 1 root root 3.9K Apr 18 22:54 oldboy.txt [root@lichengbo-nb oldboy]#
7.4 zip/unzip
选项 |
作用 |
zip -r |
压缩目录 |
unzip -d |
解压到指定目录 |
案例01 压缩文件
[root@lichengbo-nb oldboy]# zip oldboy.zip oldboy.txt adding: oldboy.txt (deflated 53%) [root@lichengbo-nb oldboy]# ll -h oldboy.zip oldboy.txt -rw-r--r--. 1 root root 3.9K Apr 18 22:54 oldboy.txt -rw-r--r--. 1 root root 2.0K Apr 18 23:00 oldboy.zip
案例02 压缩目录
zip -r etc.zip /etc/
案例03 解压
unzip etc.zip
案例04 解压到指定目录
unzip etc.zip -d /opt/
7.4总结
压缩命令 |
应用场景 |
特点 |
tar |
Linux最长用的压缩命令,用于备份。备份或压缩的首选 |
灵活与精确控制打包压缩的选项,最常用。 |
gzip |
配合其他命令的压缩,未来数据库备份中使用。注释掉配置文件。 |
一般用于压缩文件或通过管道于命令配合进行压缩。 |
zip/unzip |
一般用于解压来自于windows的zip格式的压缩包。 |
主要用于解压zip包即可。 |
环境变量(了解)
- 内置变量
- PS1
export PS1='[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]\$ '
写入到/etc/profile文件 生效surce /etc/profile 即可
总结
- 配置别名
- 三剑客gerp命令
- seq
- 打包压缩三剑客:tar gzip zip/unzip
- 环境变量
企业生产备份案例:准备/backup目录,把etc打包压缩存放在/backup/
[root@lichengbo-nb ~]# tar zcf /backup/etc_`date +%F`.tar.gz /etc/ tar: Removing leading `/' from member names [root@lichengbo-nb ~]# ll -h /backup total 21M -rw-r--r--. 1 root root 11M Apr 22 22:26 etc_2023-04-22.tar.gz
每天执行备份命令:定时任务。
反引号场景:
先取出时间,ip地址。。。。。。
然后创建文件,目录,打包压缩。。。。。
四剑客find命令
find基础与使用
find查找文件
选项 |
|
find 目录 选项 |
|
-type |
查找指定类型的文件 f(file)d(directory) |
-name |
指定文件名 |
-size |
根据文件大小进行查找 +20k 大于20k 小于-20k K(kb) M(MB注意大写) |
-maxdepth 1 |
指定find命令查找的深度,这个选项要放在选项的第一个 |
-iname |
查找文件的时候不区分大小写 |
-user或-group |
指定用户或用户组 |
-perm |
指定权限 |
案例01 在/etc/查找文件,文件叫hostname
[root@lichengbo-nb ~]# find /etc/ -type f -name 'hostname' /etc/hostname
案例02 在/oldboy目录查找,以.txt结尾的文件
[root@lichengbo-nb ~]# find /oldboy/ -type f -name '*.txt' /oldboy/0309/oldboy.txt
案例03 在/etc中查找文件,文件名包含ifcfg(开头、中间、结尾)
[root@lichengbo-nb ~]# find /etc/ -type f -name '*ifcfg*' /etc/dbus-1/system.d/nm-ifcfg-rh.conf /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-ens33
案例04 在/etc下查找文件,找出.conf结尾的文件,大小大于20kb
[root@lichengbo-nb ~]# find /etc -type f -name '*.conf' -size +20k /etc/lvm/lvm.conf
案例05 在/etc/目录下查找,修改时间是7天之前(文件最近1次修改时间距今超过7天)
[root@lichengbo-nb ~]# find /etc/ -mtime -7 /etc/ /etc/resolv.conf /etc/profile /etc/tuned/active_profile /etc/tuned/profile_mode
find命令扩展进阶选项
扩展案例01 :找出/etc/目录下,第一层中以.conf开头的文件
[root@lichengbo-nb /tmp]# find /etc/ -maxdepth 1 -type f -name "*.conf" /etc/resolv.conf /etc/asound.conf /etc/libuser.conf /etc/yum.conf /etc/dracut.conf /etc/host.conf /etc/ld.so.conf /etc/nsswitch.conf /etc/logrotate.conf /etc/libaudit.conf /etc/sestatus.conf /etc/fuse.conf /etc/sysctl.conf /etc/krb5.conf /etc/sos.conf /etc/kdump.conf /etc/rsyncd.conf /etc/tcsd.conf /etc/rsyslog.conf
扩展案例02 查找文件的时候不区分大小写。
[root@lichengbo-nb ~]# find /etc/ -type f -iname "*.conf" /etc/resolv.conf /etc/pki/ca-trust/ca-legacy.conf /etc/yum/pluginconf.d/fastestmirror.conf /etc/yum/pluginconf.d/langpacks.conf /etc/yum/protected.d/systemd.conf /etc/yum/version-groups.conf /etc/asound.conf /etc/abrt/abrt-action-save-package-data.conf /etc/abrt/abrt.conf /etc/abrt/gpg_keys.conf /etc/abrt/plugins/xorg.conf /etc/abrt/plugins/oops.conf /etc/abrt/plugins/vmcore.conf /etc/abrt/plugins/CCpp.conf /etc/abrt/plugins/python.conf /etc/openldap/ldap.conf /etc/libuser.conf /etc/selinux/semanage.conf /etc/selinux/targeted/setrans.conf /etc/yum.conf /etc/dracut.conf /etc/depmod.d/dist.conf /etc/host.conf /etc/modprobe.d/firewalld-sysctls.conf /etc/modprobe.d/tuned.conf /etc/modprobe.d/dccp-blacklist.conf /etc/rsyslog.d/listen.conf /etc/systemd/bootchart.conf /etc/systemd/coredump.conf /etc/systemd/journald.conf /etc/systemd/logind.conf /etc/systemd/system.conf /etc/systemd/user.conf /etc/dbus-1/system.d/org.freedesktop.hostname1.conf /etc/dbus-1/system.d/org.freedesktop.import1.conf /etc/dbus-1/system.d/org.freedesktop.locale1.conf /etc/dbus-1/system.d/org.freedesktop.login1.conf /etc/dbus-1/system.d/org.freedesktop.machine1.conf /etc/dbus-1/system.d/org.freedesktop.systemd1.conf /etc/dbus-1/system.d/org.freedesktop.timedate1.conf /etc/dbus-1/system.d/org.freedesktop.PolicyKit1.conf /etc/dbus-1/system.d/wpa_supplicant.conf /etc/dbus-1/system.d/nm-dispatcher.conf /etc/dbus-1/system.d/nm-ifcfg-rh.conf /etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf
find与其他命令的配合
- find与rm、ls、cat、head、替换进行配合(大部分命令都是这一种)
- find与cp/mv配合
- find与tar配合
1. find与ls
案例01找出/oldboy/find目录中以.txt结尾的文件显示详细的信息
方法一: find与ls -ln 反引号
[root@lichengbo-nb /oldboy/find]# ls -lh `find -type f -name '*.txt'` -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy01.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy02.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy03.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy04.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy05.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy06.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy07.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy08.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy09.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 ./oldboy10.txt
方法二:
[root@lichengbo-nb /tmp]# find /oldboy/find/ -type f -name '*.txt' |xargs ls -lh -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy01.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy02.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy03.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy04.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy05.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy06.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy07.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy08.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy09.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy10.txt
方法三:
[root@lichengbo-nb /tmp]# find /oldboy/find/ -type f -name '*.txt' -exec ls -lh {} \; -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy01.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy02.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy03.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy04.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy05.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy06.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy07.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy08.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy09.txt -rw-r--r--. 1 root root 0 Apr 23 00:00 /oldboy/find/oldboy10.txt
2. find与cp
案例01找出/oldboy/find目录中以.txt结尾的文件 复制到/tmp目录
方法一:
[root@lichengbo-nb ~]# cp $(find /oldboy/find/ -type f -name '*.txt') /tmp [root@lichengbo-nb ~]# ll /tmp total 10264 -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy01.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy02.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy03.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy04.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy05.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy06.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy07.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy08.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy09.txt -rw-r--r--. 1 root root 0 Apr 23 00:22 oldboy10.txt
方法二:
[root@lichengbo-nb ~]# find /oldboy/find/ -type f -name '*.txt' |xargs cp -t /tmp [root@lichengbo-nb ~]# ll /tmp total 10264 drwxr-xr-x. 82 root root 8192 Apr 18 21:24 etc -rw-r--r--. 1 root root 10497779 Apr 18 22:09 etc.tar.gz -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy01.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy02.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy03.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy04.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy05.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy06.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy07.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy08.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy09.txt -rw-r--r--. 1 root root 0 Apr 23 00:33 oldboy10.txt
方法三:
[root@lichengbo-nb ~]# find /oldboy/find/ -type f -name '*.txt' -exec cp {} /tmp \; [root@lichengbo-nb ~]# ll /tmp total 10264 drwxr-xr-x. 82 root root 8192 Apr 18 21:24 etc -rw-r--r--. 1 root root 10497779 Apr 18 22:09 etc.tar.gz -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy01.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy02.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy03.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy04.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy05.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy06.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy07.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy08.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy09.txt -rw-r--r--. 1 root root 0 Apr 23 00:32 oldboy10.txt
3. find与tar
案例01找出/oldboy/find目录中以.txt结尾的文件 并打包压缩存放在/tmp
方法一:find 反引号
[root@lichengbo-nb ~]# tar zcf /tmp/find-fan.tar.gz `find /oldboy/find/ -type f -name '*.txt'` tar: Removing leading `/' from member names [root@lichengbo-nb ~]# ll /tmp total 10268 drwxr-xr-x. 82 root root 8192 Apr 18 21:24 etc -rw-r--r--. 1 root root 10497779 Apr 18 22:09 etc.tar.gz -rw-r--r--. 1 root root 202 Apr 23 00:39 find-fan.tar.gz
方法二:find |xargs
[root@lichengbo-nb ~]# find /oldboy/find/ -type f -name '*.txt' |xargs tar zcf /tmp/find-1.tar.gz tar: Removing leading `/' from member names [root@lichengbo-nb ~]# ll /tmp total 10272 drwxr-xr-x. 82 root root 8192 Apr 18 21:24 etc -rw-r--r--. 1 root root 10497779 Apr 18 22:09 etc.tar.gz -rw-r--r--. 1 root root 202 Apr 23 00:41 find-1.tar.gz -rw-r--r--. 1 root root 202 Apr 23 00:39 find-fan.tar.gz
方法三:
[root@lichengbo-nb ~]# find /oldboy/find/ -type f -name '*.txt' -exec tar zcf /tmp/find-exec.tar.gz {} + tar: Removing leading `/' from member names [root@lichengbo-nb ~]# ll /tmp total 10276 drwxr-xr-x. 82 root root 8192 Apr 18 21:24 etc -rw-r--r--. 1 root root 10497779 Apr 18 22:09 etc.tar.gz -rw-r--r--. 1 root root 202 Apr 23 00:41 find-1.tar.gz -rw-r--r--. 1 root root 202 Apr 23 00:47 find-exec.tar.gz -rw-r--r--. 1 root root 202 Apr 23 00:39 find-fan.tar.gz
|管道与 |xargs如何处理数据
共同点 |
区别 |
|
| 管道 |
把前面命令的结果通过管道传递给后面的命令 |
传递仅仅是普通的字符 |
|xargs |
把前面命令的结果通过管道传递给后面的命令 |
传递的是参数(前面传递过来的才是命令可以识别的文件名或目录名) |
9.5 find总结
- 选项 -type -name -size -mtime
- find查找案例
- find与ls、rm、sed、head的配合
- find与cp/mv 的配合
- find与tar的配合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)