目录

一、Linux中的文件查找方式

1.1.查找“命令”(which)

1.2.任意文件的查找(locate、find)

1.2.1.文件查找(locate)

1.2.2.文件查找(find)

1.2.2.1.find的完整书写格式

1.2.2.2.find常用参数详解

1.2.2.3.find使用案例

1.3.根据文件内容去找(grep)

1.3.1.grep介绍

1.3.2.grep使用案例

二、文件打包及压缩

2.1.打包压缩

2.2.不解压查看压缩包里边的内容

2.3.解压/解包


一、Linux中的文件查找方式

1.1.查找“命令”(which)

which/whereis 命令查找是专门用于查询命令文件所在位置的专用命令。它是通过从path环境变量中进行查询的。

使用man查看官方说明:

        该函数接受一个或多个参数。对于每个参数,它会将原本会执行的可执行文件的完整路径打印到标准输出(stdout)。
       当这个参数在shell提示符下输入时,它会通过在列出的目录中搜索可执行文件或脚本来实现这一功能。

1.2.任意文件的查找(locate、find)

locate和find都用于任意文件的查找,那他们有什么区别?

其实,他俩的区别更趋向于一个是已经将本地文件系统,计算并优化存储在数据库中,locate查找时从数据库中进行查找,更偏向于离线的意思(如果修改的结果未及时更新,可能导致查询结果不准确);

而find查询的时候是基于当前的文件系统,所以更加实时准确,但大多数情况下相对较慢。

1.2.1.文件查找(locate)

注意:在centos7中,locate命令默认未安装,因为它属于 mlocate 软件包的一部分,而该包未包含在最小化安装或部分基础系统配置中。

使用man命令查看官方文档(退出使用快捷键 q

        locate 读取由 updatedb(8) 准备的一个或多个数据库,并将至少与其中一个 PATTERN 匹配的文件名写入标准输出,一个就是每行。
       如果未指定--regex,则模式(PATTERNS)可以包含通配符。如果任何模式都不包含通配符,则locate的行为就像没有指定通配符一样模式为*模式*。
       默认情况下,locate命令不会检查数据库中找到的文件是否仍然存在。locate命令永远不会报告在最近一次更新后创建的文件。但是可以执行updatedb来更新相关数据库。

1.2.2.文件查找(find)

使用man命令查看官方文档(退出使用快捷键 q

         本手册页记录了GNU版本的find。GNU find通过评估给定的条件,在以每个给定文件名为根的目录树中进行搜索,根据优先级规则(见“运算符”一节),从左到右进行表达式计算,直至得出结果(左侧为对于与(and)操作,结果为假(false);对于或(or)操作,结果为真(true)。此时,find函数将移动到下一个文件名。

1.2.2.1.find的完整书写格式

语法:

find   [path] [-option]  [expression] [action];

命令  路径   选项        表达式         动作

1.2.2.2.find常用参数详解

-name   filename               #查找名为filename的文件

-size      n[c]                      #查长度为n块[或n字节]的文件

-ctime    -n +n                   #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

-type    b/d/c/p/l/f               #查是块设备、目录、字符设备、管道、符号链接、普通文件

-perm                                #按执行权限来查找

-user    username             #按文件属主来查找

-group groupname            #按组来查找

-mtime   -n +n                   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前

1.2.2.3.find使用案例

=============================实 际 使 用==================================

find   -name april*                                     在当前目录下查找以april开始的文件
find   -name   april*   fprint file                  在当前目录下查找以april开始的文件,并把结果输出到file中
find   -name ap* -o -name may*               查找以ap或may开头的文件
find   /mnt   -name tom.txt   -ftype vfat      在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find   /mnt   -name t.txt ! -ftype vfat           在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find   /tmp   -name wa* -type l                   在/tmp下查找名为wa开头且类型为符号链接的文件
find   /home/hadoop/software   -mtime   -2            在/home/hadoop/software下查最近两天内改动过的文件
find   /home/hadoop/software    -atime -1              查1天之内被存取过的文件
find   /home/hadoop/software -mmin    +60           在/home/hadoop/software下查60分钟前改动过的文件
find   /home/hadoop/software   -amin   +30            查最近30分钟前被存取过的文件
find   /home/hadoop/software   -newer   tmp.txt      在/home/hadoop/software下查更新时间比tmp.txt近的文件或目录
find   /home/hadoop/software   -anewer   tmp.txt    在/home/hadoop/software下查存取时间比tmp.txt近的文件或目录
find   /home/hadoop/software   -used   -2                列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find   /home/hadoop/software   -user cnscn             列出/home/hadoop/software目录内属于用户cnscn的文件或目录
find   /home/hadoop/software   -uid   +501               列出/home/hadoop/software目录内用户的识别码大于501的文件或目录
find   /home/hadoop/software   -group   cnscn         列出/home/hadoop/software内组为cnscn的文件或目录
find   /home/hadoop/software   -gid 501                   列出/home/hadoop/software内组id为501的文件或目录
find   /home/hadoop/software   -nouser                    列出/home/hadoop/software内不属于本地用户的文件或目录
find   /home/hadoop/software   -nogroup                  列出/home/hadoop/software内不属于本地组的文件或目录
find   /home/hadoop/software    -name tmp.txt    -maxdepth   4   列出/home/hadoop/software内的tmp.txt 查时深度最多为3层
find   /home/hadoop/software   -name tmp.txt   -mindepth   3   从第2层开始查
find   /home/hadoop/software   -empty                         查找大小为0的文件或空目录
find   /home/hadoop/software   -size   +512k                查大于512k的文件
find   /home/hadoop/software   -size   -512k                 查小于512k的文件
find   /home/hadoop/software   -links   +2                     查硬连接数大于2的文件或目录
find   /home/hadoop/software   -perm   0700                查权限为700的文件或目录

find    /   -amin    -10           查找在系统中最后10分钟访问的文件
find    /   -atime   -2             查找在系统中最后48小时访问的文件
find    /   -empty                  查找在系统中为空的文件或者文件夹
find    /   -group   cat           查找在系统中属于 groupcat的文件
find    /   -mmin   -5             查找在系统中最后5分钟里修改过的文件
find    /   -mtime   -1            查找在系统中最后24小时里修改过的文件
find    /   -nouser                 查找在系统中属于作废用户的文件
find    /   -user    fred           查找在系统中属于FRED这个用户的文件

1.3.根据文件内容去找(grep)

1.3.1.grep介绍

前面提到的文件查找方式,which用于命令文件的查找,locate、find用于对任意文件的查找,这种方式查找的方式和结果都只针对于文件名称来进行。而grep的方式是根据文件里的内容来进行查找和匹配。

使用方式:

        grep [option(s)] pattern [filename]

grep命令中的文件名是可选的。如果没有文件名,grep等待标准输入。输入一行后,grep在行中搜索正则表达式,如果包含该特定表达式就显示此行。用户指示输入结束时(Ctrl + d),执行才结束。

1.3.2.grep使用案例

在/etc 目录下查找文件内容中有127.0.0.1 的内容: 

在当前文件夹下查找我们的含有jdk的文件有哪些

二、文件打包及压缩

tar命令是Unix/linux系统中备份文件的可靠方法几乎可以工作于任何环境中,它的使用权限是所有用户,建议针对目录。

语法:tar 选项 压缩包名称 源文件

        GNU的“tar”工具可以将多个文件一起保存到单个磁带或磁盘存档中,并且可以从存档中恢复单个文件。

功能:仅打包文件/目录(不压缩),需配合gzip/bzip2/xz(其实也就是关注一下三种不同的方式该如何使用)实现压缩。
常用选项

命令 解释
-c 压缩
-x 解压
-t 不解压查看
-v 显示过程
-f 指定包文件名(必须放在选项最后,如-zxvf,-zcvf)
-z 用gzip压缩/解压(.tar.gz 或 .tgz)
-j 用bzip2压缩/解压(.tar.bz2 或 .tbz2)
-J 用xz压缩/解压(.tar.xz)

注意:只需要关注文件类型,c用来打包,x用来解包,t用来查看

2.1.打包压缩

# 打包并压缩为 .tar.gz(最常用)
例如:tar -zcvf study.tar.gz ./study/

2.2.不解压查看压缩包里边的内容

# 不解压查看内容
tar -tvf study.tar.gz

2.3.解压/解包

# 解压 .tar.gz
tar -jxvf study.tar.gz

tar -xvf study.tar.gz -C ./tar_test
//-C重定向到//tmp目录

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐