【运维知识分享】Linux基础命令(五)

简介: 【运维知识分享】Linux基础命令(五)

今天主要讲find查找文件,tar打包压缩,tar解压,zip压缩解压。

find查找文件

1、find按照文件类型查找

语法结构:
find 从哪里找 按照什么方式查找 具体类型
find 路径 -type 类型
类型:
f 文件
d 目录
l 软链接
b 块设备
c 字节设备
! 查找取反 (基本不用)
示例1:查找当前目录下所有的文件
find ./ -type f
示例2:查找当前目录下除了所有的文件
find ./ ! -type f
示例3:查找当前目录的所有目录,包括目录下的目录,递归查找
find ./ -type d

2、find按照文件名称查找

语法结构:
find 从哪里找 按照什么方式查找 具体类型
find 路径 -type 类型
类型:
f 文件
d 目录
l 软链接
b 块设备
c 字节设备
! 查找取反 (基本不用)
示例1:查找当前目录下所有的文件
find ./ -type f
示例2:查找当前目录下除了所有的文件
find ./ ! -type f
示例3:查找当前目录的所有目录,包括目录下的目录,递归查找
find ./ -type d

3、find按照深度等级查找

查询test下最大深度等级为1级的目录
find test/ -maxdepth 1 -type d #顺序不能错

4、find按照inode号查找

find ./ -inum inode号

5、find按照文件大小进行查找

find 路径/ -size 10M  等于
find 路径/ -size +10M 大于
find 路径/ -size -10M 小于
注意加单位
默认会查目录下的文件,默认递归查找
并且 或者
find ./ -size +2M -size -20M      默认就是并且 -and -a
find ./ -size 10M -o -size +20M   -or -o      
在find里, {}不支持,用[],任意单个字符
[1-22]      1到2,或者2,只能匹配一个字符
[0-9][0-9]  0到99,[]是或者,不是区间   
[0-9a-z]    0到9,a到z
[0-9a-zA-Z] 0到9,a到z,A-Z                

6、find按照时间进行查找

find 路径 -mtime 7  距离现在刚好7天
find 路径 -mtime +7 7天前 上上周 上上上周......
find 路径 -mtime -7 7天内 上周
-mtime 文件修改时间
-ctime 文件属性变化或修改的时间
-atime 文件访问时间
示例1:查找7天前的文件
find ./ -type f -mtime +7

小结:

  1. 按照文件类型查找

find ./ -type f

find ./ -type d

 

  1. 按照文件名称查找

find ./ -name "test.txt"

find /opt/ -name "*.txt"

find ./ -type f -name "*.txt"

忽略大小写

find ./ -type f -iname "*.txt"

 

  1. 按照inode号查找

find ./ -ium xxxxx

 

  1. 按照深度等级

find ./ -maxdepth 1 -type f

 

  1. 按照文件大小查找

find ./ -type f -size +10M

find ./ -type f -size -10M

find ./ -type f -size -10M -size +2M

find ./ -type d -size +1M(大于1M说明里面小文件数量特别多)

 

  1. 按照时间进行查找

find ./ -type f -mtime +7 查找7天前修改过的文件

 

企业中常用find语句:

find / -name "test.sh"

find /data/ -type f

find /data/ -type f -mtime +30

 

7、将查找到的文件交给其他命令

cp mv rm
示例1:查找名字为1.txt的文件并拷贝到/opt目录  覆盖无提示
cp 源文件 目标文件
find ./ -name all.txt|xargs -i cp {} /opt
示例2:查找名字为1.txt的文件查看或删除  覆盖无提示
find ./ -name 1.txt|xargs ls -l
find ./ -name 1.txt|xargs rm  
调用alias发现
alias rm='rm -i'
rm因为本身系统有这个命令
所以甩到后面去是不使用 -i的
就是默认不提示,不提示的话,就没有必要带 -f
但是如果删除目录是需要带 -r的
-f可以带,但是没有必要
如果没有带-r,错误信息照样提示,只是没有交互了
示例3:查找名字为1.txt的文件移动/opt目录
find ./ -name all.txt|xargs -i mv {} /opt
方法2:使用esec
示例1:查找名字为1.txt的文件并拷贝到/opt目录
find ./ -name all.txt -exec cp {} /opt \;
示例2:查找名字为1.txt的文件查看或删除
find ./ -name 1.txt -exec ls -l {} \;
find ./ -name 1.txt -exec rm {} \;
\撬棍的含义是还原本意
;在系统中有特殊的含义 是命令的分割符
但是在find中带-exec句式必须以普通的符号;结尾
;不管前面命令是否执行成功,都可以往后分割
命令;命令;命令
;  前面的命令不管成不成功都执行后面的命令
&& 前面的命令必须执行成功才会执行后面的命令 
|| 前面的命令必须执行失败才会执行后面的命令
cd test || mkdir test
方法3:``或者$()  覆盖有提示
先执行里面命令,留在原地,交给其他命令调用
cp `find ./ -name '1.log'` /opt
cp $(find ./ -name '1.log') /opt

tar打包压缩

zip传到linux可以正常使用,rar还需要安装别的东西

可以rar解压再打包成zip

Windows压缩格式:RAR,RAR4,RAR5,ZIP

Linux系统压缩格式:tar.gz,zip

tar 参数选项 压缩包名字.tar.gz 文件名称/目录
注意后缀名固定,先压缩包后文件,可以理解成,先有框子,再去找东西放
tar -zcvf test.tar.gz 1.txt 2.txt /opt/3.txt
    -z    使用gzip压缩
    -c    creat创建
    -v    verbose显示过程 可以省略
    -f    file指定文件名称
    -tf   查看压缩包里面的文件名
    -P    不提示并在打包时不去除根,但是压缩的时候也去除
    -xf    解压文件
    -C    解压到指定位置
示例1:tar压缩打包单个文件
[root@VMware-koten ~]#touch 1.txt
[root@VMware-koten ~]#tar zcvf test.tar.gz 1.txt 
1.txt
[root@VMware-koten ~]#ll
total 4
-rw-r--r-- 1 root root   0 Mar  7 15:20 1.txt
-rw-r--r-- 1 root root 108 Mar  7 15:20 test.tar.gz
[root@VMware-koten ~]#
示例2:压缩多个文件,可以包含目录
[root@VMware-koten ~]#touch 1.txt
[root@VMware-koten ~]#mkdir 2
[root@VMware-koten ~]#tar zcvf all.tar.gz 1.txt 2
1.txt
2/
[root@VMware-koten ~]#ll
total 4
-rw-r--r-- 1 root root   0 Mar  7 15:25 1.txt
drwxr-xr-x 2 root root   6 Mar  7 15:25 2
-rw-r--r-- 1 root root 135 Mar  7 15:25 all.tar.gz
[root@VMware-koten ~]#
示例3:指定压缩包的位置,加路径即可
[root@VMware-koten ~]#tar zcvf /opt/test.tar.gz 1.txt 2.txt
示例4:压缩尽量使用相对路径
[root@VMware-koten ~]#tar zcvf etc.tar.gz /etc/hosts /etc/passwd
[root@VMware-koten ~]#tar zcvf etc.tar.gz /etc/hosts /etc/passwd
tar: Removing leading `/' from member names
/etc/hosts
/etc/passwd
[root@VMware-koten ~]#    去掉了根目录
[root@VMware-koten ~]#tar zcvfP etc.tar.gz /etc/hosts /etc/passwd
/etc/hosts
/etc/passwd
[root@VMware-koten ~]#     连根目录一起压,解压还是会去掉根目录的
[root@VMware-koten ~]#cd /etc
[root@VMware-koten /etc]#tar zcvf test1.tar.gz hosts passwd
hosts
passwd
[root@VMware-koten /etc]#    用相对路径比较好

排除压缩某个文件

方法1:
tar zcvf all.tar.gz *txt --exclude=1.txt       排除压缩1.txt
tar zcvf all.tar.gz *txt --exclude={1..3}.txt   排除压缩1.txt 2.txt 3.txt 
tar zcvf all.tar.gz *txt --exclude={1,2,3,test1}.txt   排除压缩1.txt 2.txt 3.txt test1 
方法2:
将文件名纵向输入到文件123.txt中,删除需要的文件名
tar zcvf a.tar.gz ./* --exculed-from=123.txt

tar解压

tar xf 包.tar.gz
tar -c
示例1:解压
[root@VMware-koten ~]#tar xf test.tar.gz 
示例2:tar指定解压到目录
[root@VMware-koten ~]#tar xf test.tar.gz -C /opt/
示例3:在当前opt目录下解压root下的all.tar.gz
压缩包不在当前,也需要加大C,去解压到当前
[root@VMware-koten ~]#tar xf test.tar.gz -C .

zip压缩解压

压缩
[root@VMware-koten ~]#touch 1.txt 2.txt
[root@VMware-koten ~]#zip test.zip 1.txt 2.txt 
  adding: 1.txt (stored 0%)
  adding: 2.txt (stored 0%)
[root@VMware-koten ~]#
查看压缩包内容
zipinfo
[root@VMware-koten ~]#zip test.zip 1.txt 2.txt 
  adding: 1.txt (stored 0%)
  adding: 2.txt (stored 0%)
[root@VMware-koten ~]#zipinfo test.zip 
Archive:  test.zip
Zip file size: 298 bytes, number of entries: 2
-rw-r--r--  3.0 unx        0 bx stor 23-Mar-07 19:30 1.txt
-rw-r--r--  3.0 unx        0 bx stor 23-Mar-07 19:31 2.txt
2 files, 0 bytes uncompressed, 0 bytes compressed:  0.0%
[root@VMware-koten ~]#
解压
[root@VMware-koten ~]#unzip  test.zip 
Archive:  test.zip
 extracting: 1.txt                   
 extracting: 2.txt                   
[root@VMware-koten ~]#ls
1.txt  2.txt  test.zip
[root@VMware-koten ~]#
指定解压位置
[root@VMware-koten ~]#unzip  test.zip -d /opt/
Archive:  test.zip
 extracting: /opt/1.txt              
 extracting: /opt/2.txt              
[root@VMware-koten ~]#ls /opt
1.txt  2.txt
[root@VMware-koten ~]#

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
1月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
282 1
二、Linux文本处理与文件操作核心命令
|
3月前
|
人工智能 运维 Kubernetes
别再手动敲命令了!运维自动化才是打工人的“自救之道”
别再手动敲命令了!运维自动化才是打工人的“自救之道”
100 8
|
1月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
548 56
|
15天前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
143 2
|
25天前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
75 0
Linux内存问题排查命令详解
|
1月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
138 16
|
1月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
|
3月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
704 13
|
4月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
676 21
|
4月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
linux命令—tree

热门文章

最新文章