文件查找
脚本文件名的查询
which(寻找执行文件)
-
which [-a] command
-a :将所有由PATH目录中可以找到的命令均列出,而不只是第一个被找到的命令名称
文件名的查找
文件查找:
实时查找:遍历所有文件进行条件匹配;(find)
非实时查找:根据索引查找;(whereis、locate)
whereis
-
whereis [-bmsu] [-BMS directory… -f] filename…
-b :只找二进制格式的文件
-m :只找在说明文件路径下的文件
-s:只找source源文件
-u :查找不在上述三个选项当中的其他特殊文件
locate
-
locate [-ir] keyword
-i:忽略大小写的差异
-r:后面可接正则表达式
-n N 只列举前N个匹配的项目locate -r “.*.sh”
locate -n 10 passwd
locate -i baoding -
updatedb:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件,并更新/var/lib/mlocate内的数据库文件
注:locate查找数据并非实时的,如果要查找一些比较新的内容,其实是会找不到;可以使用updatedb去更新mlocate.db
/tmp/目录下不适用
find
find [option]… [查找路径] [查找条件] [处理动作]
查找路径:默认为当前路径
查找条件:默认为指定路径下的所有文件
处理动作:默认为显示至屏幕
-
查找条件
-
-name “文件名称”:可使用通配符 : * 、?、 [] 、[^]
find . -name “????.log”
-iname 文件名称忽略大小写
find . -iname “baoding.log”
-inum n 根据inode来查找 (基本不用)
find . -inum 1179826
-samefile name 查找相同inode号的文件,其实等于查找硬链接(基本不用)
-links n 根据链接数
find . -links 2
-regex 使用正则表达式的方法匹配文件名
find /etc/ -regex “.*\.sh$” -
根据文件的属主和属组查找:
-user -group -uid -gid
-nouser 查找没有属主的文件或者目录
-nogroup 查找没有属组的文件或者目录
测试方法:新建一个ash用户,然后把一个文件的属主和属组改成ash
然后再删除ash用户 -
-type TYPE:根据文件类型查找
f 普通文件
d 目录
l 链接文件
s 套接字文件
b 块设备
c 字符设备
p 管道 -
根据文件大小来查找
-
-size [+|-] # UNIT
#UNIT: #-1 < x <= # ;(#-1,#]
-#UNIT: x <= #-1 ; (-∞,#-1]
+# UNIT : x > # ; (#,+∞)
-
-size [+|-] # UNIT
-
根据时间戳查找
-
以 “天” 为单位
-atime [+|-] #
#: # <= x < #+1 ;[#,#+1)
-: x < # ; (-∞,#)
+#: x >= #+1 ; [#+1,+∞)
-mtime
-ctime
-mtime +7 7天以前的 从第8天开始
-mtime 7 当前时间往前推第7天
-mtime -7 当前时间往前推第7天以内
–10–9–8 7——5—3–2—1
mtime +7 | mtime 7| mtime -7 |-
以分钟为单位 -amin -cmin(比较少用)
-mmin +7 -7 7
-
以 “天” 为单位
-
根据权限来查找
-
-perm [+|-] MODE
MODE :与MODE精确匹配
+MODE :任一类用户的权限只能包含对其指定的任何一位权限即可;为‘或’关系;CentOS 6为+、CentOS 7为/
-MODE :每类用户指定的检查权限都匹配,为三类用户所有指定的检查权限都能能够被包含;为‘与’关系
注:+020:中的0表示不匹配属主和其他位的权限,而不是说属主和其他位没有任何权限
-
-perm [+|-] MODE
-
组合条件:
与:-a
或:-o
非:-not, !
-not A -a -not B = -not (A -o B) :不是A也不是B
-not A -o -not B = -not (A -a B) :不是A或者不是B示例:查找/etc/下面所有的目录:
查找目录是 /etc/
要求排除 /etc/sane.d
查找.conf 文件
find /etc/ -path ‘/etc/sane.d’ -a -prune -o -name “.conf” -print
当查找到/etc/sane.d的时候 :前面的条件为真(’/etc/sane.d’ -a -prune)
或后面的条件就不会执行(-name “.conf”)
当查找到其他目录的时候 :前面的条件为假 (’/etc/sane.d’ -a -prune)
或后面的会执行 (-name “.conf”)
a && b || c
a 和b 都为真的时候 则 a && b 为真,然后后面c就不会执行
a 或者b 有一个为假,则 a && b 为假,然后后面的c就会执行
-
-name “文件名称”:可使用通配符 : * 、?、 [] 、[^]
-
处理动作
-
-print 打印到屏幕上
-ls 打印到屏幕上 类似于ls -l
-delete 删除操作 只删除文件,不能删除非空目录
-fls file 查找到的文件信息保存到指定的文本中
-ok COMMAND在执行后面的动作之前会提示你是否需要执行(交互式的)
-exec COMMAND {} \; 执行后面的命令 {} 表示前面find出的结果 \; 固定用法
-
-print 打印到屏幕上
生产经常使用方式:
1、删除 find /logs/ -name “.log” -mtime +7 | xargs rm 监控告警 (磁盘告警)
find /logs/ -name “.log” -size +20G | xargs rm 应用日志
2、备份 find /apps/data/ -name “” -exec cp {} /backup/ \;
3、查找 find /apps/ -name “.log” | xargs grep -i “error” 日志里面找错误
文件解压缩
- 压缩的作用:节省空间、节省带宽
-
压缩工具:
compress/uncompress,其对应的是.Z结尾的压缩格式文件;
gzip/gunzip,其对应的是.gz结尾的压缩格式文件;
bzip2/bunzip2,其对应的是.bz2结尾的压缩格式文件;
xz/unxz,其对应的是.xz结尾的压缩格式文件;
zip/unzip,其对应的是.zip结尾的压缩格式文件;
compress/uncompress
-
安装: yum install ncompress
compress file :会生产file.Z压缩文件,同时会删除源文件
compree -c file > file.Z :将压缩结果输出到标准屏幕上,可以一个(压缩)文件,从而达到生产压缩文件,同时保留源文件
compress -d :解压缩 .Z格式结尾的压缩文件 === uncompress
zcat file.Z 直接查看压缩文件的内容不用先解压缩
gzip/gunzip
gazip [OPTIONS] /PATH/TO/SOMEFILE…
-
-# 指明压缩比:1-9,默认是6;压缩比越高,耗费CPU资源也多;文件比较小的话,使用gzip越压缩越大
-d 解压缩 == gunzip
-c 将压缩或者解压缩结果输出到屏幕
-r 递归至目录中对每个文件进行压缩
nginx gzip on
gzipminlength 1k;超过多大的文件(1K)才会压缩,否则,越压缩越大;
zcat file.gz 直接查看压缩文件的内容不用先解压缩
bzip2/bunzip2
bzip2 [OPTIONS] /PATH/TO/SOMEFILE…
-
-#:指明压缩比:1-9,默认是6;压缩比越高,耗费CPU资源也多
-d :解压缩 == bunzip2
-k :(keep)压缩后保留源文件
zcat file.bz2 直接查看压缩文件的内容不用先解压缩
xz/unxz
xz [OPTIONS] /PATH/TO/SOMEFILE…
-
-#:指明压缩比:1-9,默认是6;压缩比越高,耗费CPU资源也多
-d :解压缩 == bunzip2
-k :(keep)压缩后保留源文件
zcat file.bz2 直接查看压缩文件的内容不用先解压缩
zip/unzip
zip ZIP_FILE.zip /PATH/TO/SOMEFILE… 打包压缩(可以压缩目录)
-
-r 递归压缩
-p 将压缩结果输出屏幕上
unzip 解压缩:unzip ZIP_FILE.zip
归档工具
归档就是将多个文件打包为单个文件以便管理,默认的归档不会执行压缩
常用的工具:tar、cpio
tar
tar [OPTION…] [FILE]…
-
tar 打包工具,将多个目录打包成一个文件
-c 打包 创建打包文件(归档);归档不会删除源文件
-f 指定打包的文件名;(-f filename 必须放在一起)
-r 将文件追加至归档文件中
-t 不解压的情况下直接查看归档文件里面的内容
-x 执行解压缩;(通常与 -v(显示解压缩过程) -f结合使用)
-C 解压到指定目录下
其他:
-p 保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P 打包的时候保留绝对路径,即允许备份数据中含有根目录存在
–exclude=File 在压缩过程中,排除File这个文件 -
归档并压缩
-
-j: bzip2
tar -j -c -f xiongan3.tar.bz2 xiongan
tar -jcf xiongan3.tar.bz2 xiongan
tar jcf xiongan3.tar.bz2 xiongan (通常使用) -
-z: gzip压缩
tar zcvf xiongxian.tar.gz xiongxian
生产经常使用的gzip
tar zcf xiongxian.tar.gz xiongxian
带目录:
tar zcf xiongan.tar.gz xiongxian
tar zcf xiongan.tar.gz xiongxian/*
不带目录:
cd xiongxian
tar zcf xiongan.tar.gz ./*tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist
/root/includefilelist 里面包含的是要压缩的文件列表
/root/excludefilelist 里面写的是不要压缩的文件列表-
-J :xz 压缩
tar Jcvf xiongan5.tar.xz xiongan
-
注:展开归档可以直接使用tar -xf,而无需为其指定对应的压缩工具选项;
cpio
-
-o 压缩
-i 解压缩
find ./etc -print |cpio -ov >etc.cpio
cpio –tv < etc.cpio
cpio –iv
cpio –idv < etc.cpio
原创文章,作者:s,如若转载,请注明出处:http://www.178linux.com/72765
评论列表(1条)
你上周的三篇文章主要介绍了vim,find命令的详细用法,包括grep与正则表达式方面的内容,基本把学过的内容都总结了出来了。写的很详细,第一篇与第二篇排版有些问题(需要注意文字段的缩进),文件查找与压缩解压缩这篇文章写的还是非常不错的,继续努力就好。