文件管理命令

今日思维导图:

小胖学Linux day09:文件管理命令3_3c

文件过滤命令

|:管道符
# 作用:将管道符左边命令的标准输出,交给管道符右边命令的标准输入来处理
例↓
[root@21:57:35wudidesangege <sub>]\ head /etc/services | grep 'e'
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $ #虚拟机内 e 为高亮显示
# Network services, Internet style
# IANA services version: last updated 2013-04-10
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports

## 指令
grep:过滤输出内容

# 下列案例 样板文件如下:
[root@22:12:16wudidesangege </sub>]\ cat /root/AMANI.txt
Beyond专辑:BeyondLive1991
AMANI
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$AMAbNIN AKUPEND
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$
他的歌唱出爱$
它的真理遍布这地球$
它怎么一去不返$
它可否会感到。
烽烟掩盖天空与未来。
无助与冰冻的眼睛。
流泪看天际带悲愤
是控诉战争到最后伤痛是儿童
我向世界呼叫

## 特殊符号:
^:以...开头
例↓
[root@22:12:25wudidesangege <sub>]\ grep '^#' AMANI.txt
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$AMAbNIN AKUPEND
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$ #虚拟机内 # 为高亮显示

[root@22:15:16wudidesangege </sub>]\ grep '^它' AMANI.txt
它的真理遍布这地球$
它怎么一去不返$
它可否会感到。 #虚拟机内 它 为高亮显示

$:以...结尾
例↓
[root@22:16:16wudidesangege <sub>]\ grep '。$' AMANI.txt
它可否会感到。
烽烟掩盖天空与未来。
无助与冰冻的眼睛。 #^要内容的在前面 $要在内容的后面 虚拟机内 $ 为高亮显示

*:匹配*前面的内容至少0次或多次
[root@22:24:03wudidesangege </sub>]\ grep 'a*' AMANI.txt
Beyond专辑:BeyondLive1991
AMANI
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$AMAbNIN AKUPEND
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$
他的歌唱出爱$
它的真理遍布这地球$
它怎么一去不返$
它可否会感到。
烽烟掩盖天空与未来。
无助与冰冻的眼睛。
流泪看天际带悲愤 #0次或多次 所以全部显示了 虚拟机内 a 为高亮显示
是控诉战争到最后伤痛是儿童
我向世界呼叫

.:匹配任意字符
[root@22:17:38wudidesangege <sub>]\ grep 'a.' AMANI.txt
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$ #虚拟机内 a 和a后面的匹配的一个字符为高亮显示

## 选项
-n:打印行号 number
例↓
[root@22:27:48wudidesangege </sub>]\ grep -n 'a' AMANI.txt
3:#$AMANIabb NAKUPEND$
4:#$ANAKUPaabENDAWEWE$
6:#$ANAKUbPENatDAWEWE #虚拟机内 a 为高亮显示
7:#它主宰世add上一切$

-A:after 查看过滤内容的后N行
例↓
[root@22:28:01wudidesangege <sub>]\ grep -A 2 '主' AMANI.txt
#它主宰世add上一切$
他的歌唱出爱$ #虚拟机内 主 为高亮显示
它的真理遍布这地球$

-B:before 查看过滤内容的前N行
例↓
[root@22:28:50wudidesangege </sub>]\ grep -B 2 '主' AMANI.txt
#$AMAbNIN AKUPEND
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$ #虚拟机内 主 为高亮显示

-C:center 查看过滤内容的前、后N行
例↓
[root@22:29:49wudidesangege <sub>]\ grep -C 2 '主' AMANI.txt
#$AMAbNIN AKUPEND
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$ #虚拟机内 主 为高亮显示
他的歌唱出爱$
它的真理遍布这地球$

-v:取反
例↓
[root@22:30:58wudidesangege </sub>]\ grep -v '主' AMANI.txt
Beyond专辑:BeyondLive1991
AMANI
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$AMAbNIN AKUPEND
#$ANAKUbPENatDAWEWE
他的歌唱出爱$
它的真理遍布这地球$
它怎么一去不返$
它可否会感到。
烽烟掩盖天空与未来。
无助与冰冻的眼睛。
流泪看天际带悲愤
是控诉战争到最后伤痛是儿童
我向世界呼叫

-E:可以过滤多个结果
例↓
[root@22:31:20wudidesangege <sub>]\ grep -E '主|它|a' AMANI.txt
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$
它的真理遍布这地球$ #虚拟机内 主 它 a 为高亮显示
它怎么一去不返$
它可否会感到。

-o:只打印出过滤内容
例↓
[root@22:32:40wudidesangege </sub>]\ grep -o '主' AMANI.txt
#虚拟机内 主 为高亮显示

-i:不区分大小写
例↓
[root@22:36:01wudidesangege <sub>]\ grep -i 'a' AMANI.txt
AMANI
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$AMAbNIN AKUPEND #虚拟机内 a A 为高亮显示
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$

# 关于[a-zA-Z]
[root@22:33:25wudidesangege </sub>]\ grep '[a..zA..Z]' AMANI.txt
AMANI
#$AMANIabb NAKUPEND$
#$ANAKUPaabENDAWEWE$
#$AMAbNIN AKUPEND #虚拟机内所有字母不管大小写都为高亮显示
#$ANAKUbPENatDAWEWE
#它主宰世add上一切$ #

[root@22:36:08wudidesangege ~]\ grep '^[a-zA-Z]' AMANI.txt
Beyond专辑:BeyondLive1991
AMANI #虚拟机内 A B 为高亮显示

文件的上传和下载命令

## 如何把windows的文件上传到虚拟机里
#指令:rz
例↓
[root@22:43:31wudidesangege <sub>]\ rz
#然后在windows里找到要上传的文件确定上传就行了

## 如何把虚拟机的文件下载到windows里
#指令:sz

sz 文件名
[root@22:54:52wudidesangege </sub>]sz /root/新建文本文档_\(2\).txt
#找到你要传输的文件 确定传输就好了

## 需要安装lrzsz
输入 yum install -y lrzsz 等待安装完成
## 注意:只能虚拟机和物理机之间上传下载

## 外网下载命令↓
# 安装wget命令
输入 yum install -y wget 等待安装完成
#指令:wget

wget 下载地址
例↓
[root@23:00:04wudidesangege <sub>]\ wget https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.93img.com%2Fwp-content%2Fuploads%2F2020%2F03%2F7bcfd12c3c4b8dde6b8dfd80af1ec05b.jpg&refer=http%3A%2F%2Fwww.93img.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1650697147&t=75b565acb1169be7e150cf6722e43d76

-O:指定下载的位置和文件的名字
例↓
[root@23:02:08wudidesangege </sub>]\ wget -O /root/3/hzw.jog https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.93img.com%2Fwp-content%2Fuploads%2F2020%2F03%2F7bcfd12c3c4b8dde6b8dfd80af1ec05b.jpg&refer=http%3A%2F%2Fwww.93img.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1650697147&t=75b565acb1169be7e150cf6722e43d76
[root@23:03:53wudidesangege ~]\ ll /root/3
total 4
-rw-r--r--. 1 root root 1408 Mar 24 23:04 hzw.jog

文件查找命令

type -a 只针对系统内置命令

## 查找命令位置的命令 which
which 只能查找命令
例↓
[root@23:08:05wudidesangege <sub>]\ which mkdir
/usr/bin/mkdir

[root@23:08:21wudidesangege </sub>]\ which mv
alias mv='mv -i'
/usr/bin/mv

字符处理命令-排序

sort
## 语法
sort [选项]... File...
# 注意:默认按照每一行的第一个字符进行排序,如果字符相同就往后推,字母按照a-z的顺序排序,排序不修改源
文件内容

#下列案例 样板文件如下↓
[root@23:09:14wudidesangege <sub>]\ cat >> sort.txt <<EOF
> b:3
> c:2
> a:4
> e:5
> d:1 #此时这个文件内容系统默认是一列的
> f:11
> EOF

例↓
[root@23:15:41wudidesangege </sub>]\ sort sort.txt
a:4
b:3
c:2
d:1
e:5
f:11
[root@23:15:47wudidesangege <sub>]\ cat sort.txt
b:3
c:2
a:4
e:5 # 注意:默认按照每一行的第一个字符进行排序,如果字符相同就往后推
d:1 # 字母按照a-z的顺序排序,排序不修改源文件内容
f:11

## 选项
-t:指定分隔符
例↓
[root@23:10:32wudidesangege </sub>]\ sort -t ':' sort.txt
a:4
b:3
c:2
d:1 #此时文件内容系统已经按 : 为分隔符将内容分成了两列
e:5
f:11

-k:指定按照某一列,进行排序
例↓
[root@23:19:37wudidesangege <sub>]\ sort -t ':' -k 2 sort.txt
d:1
f:11
c:2
b:3
a:4 #此时文件内容系统已经按 : 为分隔符将内容分成了两列 并用第二列进行排序
e:5

-n:按照阿拉伯数字排序
例↓
[root@23:20:02wudidesangege </sub>]\ sort -t ':' -k 2 -n sort.txt
d:1
c:2
b:3
a:4
e:5
f:11

-r:reverse 倒叙排序
例↓
[root@23:21:22wudidesangege <sub>]\ sort -rnt ':' -k 2 sort.txt
f:11
e:5
a:4
b:3
c:2 #rn的顺序可以调换 但t一定要在后面
d:1

## 练习题 题目样板↓
[root@23:25:14wudidesangege </sub>]\ cat >> paixuti.txt <<EOF
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.3.12 00:30:15:A2:3A:A1
EOF

[root@23:26:28wudidesangege ~]\ sort -t '.' -k 4 -n paixyti,txt
192.168.1.1 00:0F:AF:81:19:1F
192.168.3.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.3.3 00:0F:AF:85:70:42
192.168.1.10 00:30:15:A2:3B:B6
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.3.12 00:30:15:A2:3A:A1
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.0.153 00:0F:AF:85:70:03
#此时文件内容系统已经按 . 为分隔符将内容分成了四列 并用第四列进行排序
#按第以行192.168.1.1 00:0F:AF:81:19:1F 来说 分为以下四列↓
#第一列:192 第二列:168 第三列:1 第四列:1 00:0F:AF:81:19:1F