Linux操作系统中的文件查找(which/whereis/find/locate/grep)及解压缩
目录
一、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目录
