文件查找和压缩

文件查找
在文件系统上查找符合条件的文件
locate命令:模糊查locate,非实时需手动执行更新数据库updatedb
-i:不区分大小写的搜索 示列locate -i pasSSWd
-n:只列出查询出结果的前三个 示列:locate -n3 passwd
-r:使用基本正则表达式需要加r 示列:locate -r ‘.conf$’
find命令:实时查找工具,通过遍历指定路径完成文件查找
-maxdepth:最大搜索目录深度,指定目录下的文件为1级
-depth:先处理目录内的文件,再处理指定目录
示列:find /tmp/ -maxdepth 2 -name wujiancong
-mindepth:查看不小于多深的文件,不低于所限内容
示列:find /etc -mindepth 4 -name .conf
-name:“文件名称” 支持glob函数
,?,[],[^]
-iname:“文件名称” 不区分大小写查找
-inum:按inode号查找
-samefile name 相同inode号的文件
-regex:以模式匹配整个文件路径,而非文件名称
示列:find /etc -regex “..sh$"
根据属主、属组查找
-user username :查找属主为指定用户UID的文件
示列:find -user wjc
-group grpname:查找属组为指定组GID的文件
示列:find -user joe -not -group joe
-uid userID:查找属主为指定的UID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
根据文件类型查找
-type
f:普通文件 d:目录文件 l:符号链接文件
p:管道文件 s:套接字文件 b:块设备文件
c:字符设备文件 -empty:空文件或目录
组合条件:
与:-a 或:-o 非:-not !
德.摩根定律:
(非A)或(非B)=非(A且B)
(非A)且(非B)=非(A或B)
示列:
!A -a !B= (A -o B)
!A -o !B = !(A -a B)
查找/tmp下非用户root与非F开头的文件
:find /tmp (-not -user root -a -not -name 'f
')
根据文件大小查找
-size [+|-]#UNIT
常用单位:k, M, G,c(byte)
#UNIT: (#-1, #]如:6k 表示(5k,6k]
-#UNIT:[0,#-1]如:-6k 表示[0,5k]
+#UNIT:(#,∞)如:+6k 表示(6k,∞)
根据时间戳:
以“天”为单位
-atime [+|-]#, 访问时间
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-mtime 修改时间 文件内容最后被修改时间
-ctime 变更时间 文件最后被变更的时间
find /var -mtime -8 ! ( -user root -o -user postfix )
以“分钟”为单位
-amin
-mmin
-cmin
根据权限查找
find /tmp -perm 755
处理动作
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行“ls -l”命令
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命 令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性
传递给后面的命令
由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs
可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数
许多命令不能接受过多参数,命令执行可能会失败,xargs可以解决
注意:文件名或者是其他意义的名词内含有空格符的情况
find和xargs的组合:find | xargs COMMAND
示例:
ls | xargs rm 删除当前目录下的大量文件
find /sbin/ -perm +700 | ls -l 这个命令是错误的
find /bin/ -perm /7000 | xargs ls -Sl 查找有特殊权限的文件,并排序
find /bin/ -perm -7000 | xargs ls -Sl 此命令和上面有何区别?
find -type f -name “.txt” -print0 | xargs -0 rm 以字符nul分隔
find示例
备份配置文件,添加.orig这个扩展名
find -name “
.conf” -exec cp {} {}.orig \; 提示删除存在时间超过3天以上的joe的临时文件
find /tmp -ctime +3 -user joe -ok rm {} \; 在主目录中寻找可被其它用户写入的文件
find ~ -perm -002 -exec chmod o-w {} \; 查找/data下的权限为644,后缀为sh的普通文件,增加执行权限
find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \; 查看/home的目录
find /home –type d -ls

                压 缩 解 压

压缩工具
zip:
gzip,gunzip=gunzip -d,zcat:使用gzip压缩便使用zcat 查看压缩内容
bzip2,bunzip2
xz,unxz
指定压缩比:1-9个级别,默认6,9最高
压缩比越大速度越慢,越消耗cpu资源

gzip 压缩文件 示列:gzip message 压缩完成之后不保留原文件 默认压缩.gz后缀
-c:将压缩结果输出,可以使用重定向将其保存为压缩文件,从而保留源文件
bzip2 :压缩完成之后不保留原文件 默认压缩.gz
-k:压缩和解压时都保留源文件
xz:压缩
归档工具
tar [options] file.tar file1

tar  -cvf  etc.gz  /tmp  创建

tar xvf :解压缩
-c:创建归档
-x:展开归档
-t:不展开而直接查看被归档的文件
-z:使用gzip压缩
-Z:使用compress进行解压缩
-j:使用bz2压缩
-J:使用xz压缩
-v:显示解压缩执行过程
-f:指定要处理的文件名