文件查找和压缩
1.使用locate命令
查询系统上预建的文件索引数据库
/var/lib/mlocate/mlocate.db
索引的构建过程需要遍历整个根文件系统,极消耗资源
工作特点:
查找速度快
模糊查找
非实时查找
搜索的是文件的全路径,不仅仅是文件名
可能只搜索用户具备读取和执行权限的目录
locate KEYWORD
-i:不区分大小写的搜索
-r:使用正则表达式
2.使用find命令
实时查找工具,通过遍历指定路径完成文件查找
工作特点
查找速度慢
精确查找
实时查找
可能只搜索用户具备读取和执行权限的目录
语法:
find [OPTION]...[查找路径][查找条件][处理动作]
查找路径:指定具体目标路径,默认为当前目录
查找条件:指定的查找标准,可以为文件名、大小、类型、权限等标准进行;
1.指定搜索层级
-maxdepth level 最大搜索目录深度,指定目录(指定查找的路径)为第一级
-mindepth level 最小搜索目录深度
2.根据文件名和inode查找:
-name "文件名称":支持使用glob
-samefile name :相同inode号的文件(硬链接)
-regex "PATTERN"以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
3.根据属主、属组查找
-user USERNAME:查找属主为指定用户(UID)的文件
-group GROUPNAME:查找属组为指定组(GID)的文件
-uid UserID:查找属主为指定的UID号的文件
-gid GroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
查询系统上预建的文件索引数据库
/var/lib/mlocate/mlocate.db
索引的构建过程需要遍历整个根文件系统,极消耗资源
工作特点:
查找速度快
模糊查找
非实时查找
搜索的是文件的全路径,不仅仅是文件名
可能只搜索用户具备读取和执行权限的目录
locate KEYWORD
-i:不区分大小写的搜索
-r:使用正则表达式
2.使用find命令
实时查找工具,通过遍历指定路径完成文件查找
工作特点
查找速度慢
精确查找
实时查找
可能只搜索用户具备读取和执行权限的目录
语法:
find [OPTION]...[查找路径][查找条件][处理动作]
查找路径:指定具体目标路径,默认为当前目录
查找条件:指定的查找标准,可以为文件名、大小、类型、权限等标准进行;
1.指定搜索层级
-maxdepth level 最大搜索目录深度,指定目录(指定查找的路径)为第一级
-mindepth level 最小搜索目录深度
2.根据文件名和inode查找:
-name "文件名称":支持使用glob
-samefile name :相同inode号的文件(硬链接)
-regex "PATTERN"以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
3.根据属主、属组查找
-user USERNAME:查找属主为指定用户(UID)的文件
-group GROUPNAME:查找属组为指定组(GID)的文件
-uid UserID:查找属主为指定的UID号的文件
-gid GroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
4.组合条件
与:-a
或:-o
非:-not,!
德摩根定律:
(非A)或(非B)=非(A且B)
(非A)且(非B)=非(A或B)
示例:
!A-a!B=!(A-oB)
!A-o!B=!(A-aB)
括号的转义字符 \( xxx \) xxx与括号之间有空格
5.根据条件大小来查找:
-size[+|-]#UNIT
查用单位:k,M,G,c(byte)
#UNIT:(#-1,#)
如:6k表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k表示[0,5k]
+#UNIT:(#,oo)
如:+6k表示(6k,oo)
6.根据文件类型查找:
-type TYPE
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件
空文件或目录
-empty
find /app -type d -empty (空目录)
Linux下的三个时间:
1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。
1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。
7.根据时间戳查找
以天为单位
-atime [+|-]#
-#:[0,#)
#:[#,#+1)
+#:[#+1,oo]
-mtime
-ctime
以分钟为单位
-amin
-mmin
-cmin
8.根据权限查找
-perm [/|-]mode (换算成三位二进制来看,0忽略,只关心1是否匹配)
mode:精确权限匹配
/mode:任何一类(u,g,o)对象的权限中只能一位匹配即可,或关系
-mode:每一类对象都必须同时拥有指定权限,与关系(非精确匹配,包含即可,find -perm -666 文件权限为667的也能匹配到,因为7中包含了6)
处理动作:对符合条件的文件做操作,默认输出至屏幕
-print:默认的处理动作,显示至屏幕
-ls:类似于对查到的文件执行ls -l命令
-delete:删除查找到的文件
-ok COMMAND {} \; 对查找到的文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}:用于引用查找到的文件名称本身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
参数替换xargs
由于很多命令不支持管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令
xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成arguments
注意:文件名或者时其他意义的名词内含有空格符的情况
有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决
示例:
ls f*|xargs rm
find /sbin -perm +700|ls -l 这个命令是错误的
find /sbin -perm +700|xargs ls -l
3.压缩和解压缩工具
常用功能:压缩源文件并保留源文件;解压缩文件;指定压缩比进行压缩;压缩工具要注意文件后缀
1.gzip/gunzip
gzip [OPTION]...file...
-d:解压缩,相当于gunzip
-c:将压缩或解压缩的结果输出至标准输出
-#:1-9,指定压缩比,值越大压缩比越大
gzip -c messages >messages.gz
2.bzip2/bunzip2
bzip2 [OPTION]...file...
-k:keep,保留原文件
-d:解压缩
-#:1-9指定压缩比,默认为9
3.xz/unxz
xz [OPTION]...file...
-k:保留原文件
-d:解压缩
-#:1-9,压缩比,默认为6
4.zip/unzip
压缩文件
zip Packages.zip Packages
打包压缩
zip -r /hjm/sysconfig /etc/sysconfig
解包解压缩
unzip sysconfig.zip
5.不显示解压缩的前提下查看文件内容
zcat——gz
bzcat——bz2
xzcat——xz
4.打包工具
tar [OPTION]...
(1)创建归档
tar -cpvf /PATH/TO/SOMEFILE.tar file...
(2)追加文件至归档 注:不支持对压缩文件追加
tar -rf /PATH/TP/SOMEFILE.tar file...
(3)查看归档文件中的文件列表
tar -tf /PATH/TO/SOMEFILE.tar
(4)展开归档
tar -xf /PATH/TO/SOMEFILE.tar -C /PATH/
(5)结合压缩工具实现:归档并压缩
-j:bzip2,-z:gzip,-J:xz