Linux知识心得12 文件查找+上传下载+输出与重定向+字符处理+打包
笔记
1、今天内容
1、文件查找
1、查找深度
指定需要查找的文件层级。
格式:
find [路径] -maxdepth [层级数] [匹配规则] # 注:-maxdepth不能够单独使用的
例1:查找/etc目录下所有的文件夹,要求目录层级为3?
find ./ -maxdepth 3 -type d
例2:查询/etc目录下名称包含eth的普通文件,要求目录层级为3。
[root@localhost etc]# find /etc -maxdepth 3 -name '*eth*' -type f
2、处理查找出来的内容
-exec
是find中的参数之一,它的主要作用是将find查询出来的内容交给其他命令来处理。
格式:
find [路径] [匹配规则] -exec 处理的命令 {} \;
例1:将/etc目录下所有的普通文件复制到/tmp/etc目录下
[root@localhost etc]# find /etc -type f -exec cp {} /tmp/etc/ \;
例2:将/tmp/etc目录中所有超过1M的文件删除
[root@localhost etc]# find /tmp/etc -size +1M -exec rm -rf {} \;
xargs
xargs不是find的参数,它是格式化输出的一种命令
格式:
find [路径] [匹配规则] | xargs
例1:查询/tmp/etc目录中超过20M的文件,将其删除
[root@localhost etc]# find /tmp/etc/ -size +10M | xargs -I {} rm -rf {}
例2:查询/tmp/etc目录中超过20M的文件,将其移动到/root目录下
[root@localhost etc]# find /tmp/etc -size +20M | xargs -I {} mv {} /root/
3、检测
1、将etc目录中所有的目录复制到/tmp下
find /etc -type d -exec cp -r {} /tmp \;
2、将/tmp下文件名称中包含sys的文件及文件夹删除
find /tmp -name '*sys*' -exec rm -rf {} \;
2、上传与下载
1、上传
yum install lrzsz -y
rz
2、下载
wget
下载文件(yum install wget -y)
参数:
-O : 指定下载的路径及文件名
curl
读取文件(Linux自带命令)
参数:
-o : 指定下载的路径及文件名
sz
从Linux主机中下载文件到客户端
3、输出与重定向
$? : 上一条命令的运行结果(运行返回值),当返回值为0时,则认为上一条命令运行成功,非0则认为失败。
0 :标准输入
1 :标准正确输出
2 : 标准错误输出
& :是标准正确和错误输出
> :覆盖重定向(先清空该文件,然后写入新内容)
>> :追加重定向(在原有的文件后写入新内容)
< :输入重定向
#!/bin/bash
while read line
do
echo $line
done < /etc/passwd
2>&1 等价于 &
echo 111 >> log 2>&1
echo 111 & >> log
检测:
1、使用grep过滤文件中包含root的行,要求使用输入重定向方式(/etc/passwd)
grep 'root' < /etc/passwd
2、编写一个脚本,要求标准正确输出到log文件中,标准错误输出到log1文件中。
echo 111 1>log 2>log1
4、字符处理命令
1、字符排序 sort
将字符按照一定的顺序排序,(默认情况下:按照第一个字符进行排序)
参数:
-n # 依照数值的⼤⼩排序
-r # 以相反的顺序来排序
-k # 以某列进⾏排序
-t # 指定分割符,默认是以空格为分隔符
例1:将1.txt按照数值从大到小进行排序
[root@localhost ~]# cat 1.txt | sort -n -r
例2:将1.txt按照第二列数值从大到小进行排序
[root@localhost ~]# cat 1.txt | sort -n -r -k2
例3:将1.txt按照冒号来分割,按照第三列来从大到小进行排序
[root@localhost ~]# cat 1.txt | sort -n -r -k3 -t:
2、字符去重 uniq
⽤于检查及删除⽂本⽂件中重复出现的⾏列,⼀般与 sort 命令结合使⽤。
参数:
-c # 在每列旁边显示该⾏重复出现的次数。
-d # 仅显示重复出现的⾏列。
-u # 仅显示出⼀次的⾏列。
#由于统计是统计相临的几个数值,需要配合sort来正确统计数据
例1:输出2.txt文件中,每个词出现的次数
[root@localhost ~]# cat 2.txt | sort | uniq -c
例2:在第一题的基础上,仅显示出现重复的列
[root@localhost ~]# cat 2.txt | sort | uniq -c -d
例3:在第一题的基础上,仅显示未重复的列
[root@localhost ~]# cat 2.txt | sort | uniq -c -u
例4:在第一题的基础上,要求按照重复的次数进行排序
[root@localhost ~]# cat 2.txt | sort | uniq -c | sort -r
3、切割字符 cut
cut命令⽤来显示⾏中的指定部分,删除⽂件中指定字段
参数:
-d # 指定字段的分隔符,默认的字段分隔符为"TAB";
-f # 显示指定字段的内容;
例1:获取当前系统中所有的用户ID
[root@localhost ~]# cat /etc/passwd | cut -d: -f3
例2:在第一题的基础上,按照从大到小的顺序排序
[root@localhost ~]# cat /etc/passwd | cut -d: -f3 | sort -r -n
4、删除和替换字符 tr
替换或删除命令
参数:
-d # 删除字符
例1:删除/etc/passwd中root
[root@localhost ~]# cat /etc/passwd | tr -d 'root'
例2:将/etc/passwd文件中所有的bash转换成BASH
[root@localhost ~]# cat /etc/passwd | tr 'bash' "BASH"
5、字符统计 wc
统计,计算数字
参数:
-c # 统计⽂件的字节数;
-l # 统计⽂件的⾏数;
-w # 统计⽂件中单词的个数,默认以空⽩字符做为分隔符
例1:统计3.txt中有多少个字节的数据
[root@localhost ~]# cat 4.txt | wc -c
例2:统计3.txt中有多少行数据
[root@localhost ~]# cat 4.txt | wc -l
例3:统计3.txt中有多少个词(一段数字和字母连续不断的字符串,不包含特殊字符)
[root@localhost ~]# cat 4.txt | wc -w
2、打包和压缩
什么是压缩包
打包指的是将多个⽂件和⽬录合并为⼀个特殊⽂件,然后将该特殊⽂件进⾏压缩,得到压缩包。
为什么要用压缩包
1.减少占⽤的体积
2.加快⽹络的传输
Windows的压缩和Linux的有什么不同
1、Windows : zip
2、Linux : tar
Linux下常⻅的压缩包类型
格式 压缩⼯具
.zip zip压缩⼯具
.gz gzip压缩⼯具,只能压缩⽂件,会删除源⽂件(通常配合tar使⽤)
.bz2 bzip2压缩⼯具,只能压缩⽂件,会删除源⽂件(通常配合tar使⽤)
.tar.gz 先使⽤tar命令归档打包,然后使⽤gzip压缩
.tar.bz2 先使⽤tar命令归档打包,然后使⽤bzip压缩
gzip : 只用gzip压缩算法压缩,不打包
-d : 解压gzip压缩
bzip2 :只用bzip压缩算法压缩,不打包
1、打包
PS: [root@ljl etc]# tar -cvzf $(date +%F)_a.tar.gz yum.conf # 增加时间明确备份时间
# 如果带有时分秒,不要⽤冒号分隔,因为⽂件名的命名⾥不能带有冒号
tar
tar打包时会将路径同时打包到压缩包中,如果从根目录开始,tar会自动删除/目录。
参数:
-f : 指定打包的文件名称
-c : 打包文件
-v : 显示打包的过程
-z : 使用gzip压缩算法进行压缩处理(推荐)
-j : 使用bzip2压缩算法进行压缩处理
-P : 在打包过程中,取消移除根目录说明
-x : 将tar打包的压缩包解压
-t : 查看压缩包内内容
-C : 解压至指定目录
例1:将/etc/passwd压缩到/tmp/passwd.tar.gz
[root@localhost tmp]# tar -czvf /tmp/passwd.tar.gz /etc/passwd
例2:将/etc下,所有的普通文件目录打包成etc.tar.gz
[root@localhost tmp]# find /etc/ -type d -exec tar -czPvf etc.tar.gz {} \;
例3:将/etc/passwd压缩到/tmp/passwd.tar.bz2
[root@localhost tmp]# tar -cjPvf /tmp/passwd.tar.bz2 /etc/passwd
例4:将/etc下,所有的普通文件目录打包成etc.tar.bz2
[root@localhost tmp]# find /etc/ -type d -exec tar -cjPvf etc.tar.bz2 {} \;
例5:将第三题中的压缩包解压到/tmp/test目录下
[root@localhost tmp]# tar -xf etc.tar.gz
例6:将etc.tar.gz解压到/tmp/test/目录下
[root@localhost etc]# tar -xf etc.tar.gz -C /tmp/test/
zip
1、打包
格式:
zip [压缩包名称] [压缩文件...]
参数:
-r : 递归压缩,递归处理,将指定目录下的所有文件和子目录一并处理。
-q : 静默输出
例1:压缩/etc/yum.conf /etc/passwd
[root@localhost test]# zip test.zip /etc/yum.conf /etc/passwd
例2:压缩/etc目录
[root@localhost test]# zip -r etc.zip /etc/*
2、解压(unzip)
参数:
-l : 显示压缩包内部信息
-d : 解压到指定目录
例1:解压上述test.zip
[root@localhost etc]# unzip etc.zip
2、压缩算法
1、gzip压缩算法(压缩完成之后,立即删除源文件)
参数:
-d : 解压
gzip [文件]
2、bzip2压缩算法
3、打包压缩和find结合
find [路径] [匹配规则] -exec [压缩打包] \;
例1:将/etc目录下的所有普通文件进行压缩
[root@localhost etc]# tar -zcPvf vvv.tar.gz `find /etc/ -type f | xargs`

浙公网安备 33010602011771号