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` 
posted @ 2021-07-01 17:03  虾虾78  阅读(203)  评论(0)    收藏  举报