文件查找 下载 压缩 解压 命令
1、命令查找(查找某一个命令在什么地方)
which [command]
2、文件查找(find)
1、按照文件名称查找 -name
格式:find [路径] -name '[匹配规则]'
例1:查询以.html结尾的文件
[root@localhost ~]# find /root -name '*.php'
例2:查询/etc目录下,文件名称中包含pass的文件
[root@localhost ~]# find /etc -name '*pass*'
例3:查询/ect目录下,文件名以pass开头的文件
[root@localhost ~]# find /etc -name 'pass*'
2、按照文件类型查找(type)
-(f) : 普通文件
d : 目录文件
l : 链接文件
b : 块设备文件
c : 字符设备
s : 套接字文件
p : 管道文件
格式:find [路径] -type '[匹配类型]'
例1:查询/root目录下,有哪些普通文件
[root@localhost ~]# find /root/ -type f
例2:查询/dev目录下,有哪些字符设备文件?
[root@localhost ~]# find /dev/ -type c
例3:查询/run目录下,有哪些套接字文件
[root@localhost ~]# find /run -type s
3、按照属性来查
属主,属组,不存在用户或用户组的
格式:
find [路径] -user '用户名'
find [路径] -group '组名'
find [路径] -nouser
find [路径] -nogroup
例1:查询/tmp目录下,有哪些属主为root的文件?
find /tmp -user 'root'
例2:查询/tmp目录下,有哪些属组为test的文件?
find /tmp -group 'test'
例3:查询/tmp目录下没有用户的文件有哪些?
find /tmp -nouser
例4:查询/tmp目录下没有属组的文件?
find /tmp -nogroup
例5:查询/tmp目录下,没有属组同时没有属主的文件?
find /tmp -nouser -nogroup
4、按照权限来查找(perm)
可读权限(4),可写权限(2),可执行权限(1)
格式:
find [路径] -perm [数字权限]
例1:查询/tmp目录下,权限为664的文件有哪些
find /tmp -perm 664
例2:查询/tmp目录下,属组只有可读可写权限的文件有哪些?
find /tmp -perm 664
5、按照文件大小查
dd :创建文件的命令
if : 指定读取的文件
of : 指定写入的文件
bs : 每次写入的大小
count : 写几次
例1:写入文件50M
dd if=/dev/zero of=/tmp/test4.txt bs=10M count=5
参数:
-a : 并且(默认)
-o : 或者
格式:
find [路径] -size '文件大小'
例1:查新/tmp目录下,大小为40M的文件有哪些?
find /tmp/ -size 40M
例2:查找/tmp目录下,大小为20M的文件有哪些?
find /tmp -size 20M
例3:查找/tmp目录下,大于20M的文件并且小于40M的文件有哪些?
find /tmp -size +20M -a -size -40M
例4:查找/tmp目录下,小于30M 或 大于40M的文件有哪些?
find /tmp -size 30M -o -size +4M
6、按照时间来查询(mtime)(atime)(ctime)
date -s '修改的时间'
同步互联网时间:/usr/sbin/ntpdate ntp1.aliyun.com
参数:
-ctime : 创建时间
-atime : 访问时间
-mtime : 修改时间
+7 : 7天前创建的
7 :正好七天创建的
-7 :7天内创建的
格式:
find [路径] -ctime '7'
例1:查询7天前创建的文件?
find /tmp -ctime +7
例2:查询7天内创建的文件?
find /tmp -ctime -7
查找深度 (maxdepth)
指定需要查找的文件层级。
格式:
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
处理查找出来的内容(-exec)(xargs)
-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/
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
正确错误分开放:
#echo 111 >> log 2>> log2
正确错误放一起:
#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、字符处理命令(sort)默认以第一个数值排序
1、字符排序
将字符按照一定的顺序排序,(默认情况下:按照第一个字符进行排序)
参数:
默认以第一个数值排序
-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、字符去重(unip) ⼀般与 sort 命令结合使⽤
⽤于检查及删除⽂本⽂件中重复出现的⾏列,⼀般与 sort 命令结合使⽤。
参数:
默认以第一个排序
-c # 在每列旁边显示该⾏重复出现的次数。
-d # 仅显示重复出现的⾏列。
-u # 仅显示出⼀次的⾏列。
例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、打包和压缩
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、打包(tar)
tar
tar打包时会将路径同时打包到压缩包中,如果从根目录开始,tar会自动删除/目录。
参数:
-f : 指定打包的文件名称
-c : 打包文件
-v : 显示打包的过程
-z : 使用gzip压缩算法进行压缩处理(推荐)
-j : 使用bzip2压缩算法进行压缩处理
-P : 在打包过程中,取消移除根目录说明
-x : 将tar打包的压缩包解压
-t : 查看压缩包内内容
-C : 解压至指定目录
-q :静默输出
例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)
格式:
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压缩算法
参数:
-d : 解压
格式:
bzip2 [文件]
3、打包压缩和find结合
格式: find [路径] [匹配规则] -exec [压缩打包] \;
例1:将/etc目录下的所有普通文件进行压缩
[root@localhost etc]# tar -zcPvf vvv.tar.gz `find /etc/ -type f | xargs` (反引号代表先运行的意思)