find
Brief introduction
在指定目录下查找文件
find命令用来实时查找指定文件,从指定起始路径开始遍历其下级目录结构完成文件查找
特性:精确且慢
usage
find [OPTIONS] [查找路径] [查找条件] [处理动作]
查找路径:具体搜索目标,默认为当前路径
查找条件:可以对文件名、大小、文件类型、文件从属、以及权限等进行查找,默认为查找路径下所有文件
处理动作:对匹配到查找条件的文件作出相关处理操作,默认直接输出到标准输出
Search Terms
根据文件名:
-name "patten" 区分大小写
-iname "patten" 不区分大小写
以上两个支持通配符
-regex "patten" 基于基本正则表达式
根据文件从属:
-user username 文件属主为username的文件
-group groupname 文件属组为groupname的文件
-uid UID 查找指定UID的文件
-gid GID 查找指定GID的文件
-nouser 无所有者的文件
-nogroup 无所有组的文件
根据文件类型
-type TYPE
f:普通文件
d:目录
l:符号链接
b:块设备
c:字符设备
p:管道文件
s:socket文件
根据文件大小
-size [+|-]#UNIT
常用单位:k, M, G,c(byte)
#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)
根据时间
单位“天”:[+|-]#
-atime
-ctime
-mtime
例:
-atime 7 :[7,8)
-atime -7 :[0-7)
-atime +7 :[8,∞)
下同
单位“分”
-amin
-mmin
-cmin
根据文件权限
-perm [/|-] mode
-perm mode :精确匹配文件权限
-perm -mode :u,g,o三者都要有匹配的权限
-perm +mode : u,g,o三者只要有一个有匹配的权限
逻辑组合
与:-a
或:-o
非:-not 或 !
指定路径深度
-maxdepth # :最大查找深度为#
-mindepth # :最小查找深度为#
-depth :从最深层的目录开始查找
-empty :空文件
-prune :排除
在/etc/目录下除了/etc/sane.d目录查找.conf结尾的文件
find /etc -path ‘/etc/sane.d’ -a -prune -o -name "*.conf"
Processing operation
-print:默认处理动作,输出到标准输出
-ls :查看查找到文件的详细信息
-delete :删除查找到的文件
-fls /PATH :将查找到的文件详细信息保存到指定文件中
-ok COMMAND {} \; :对查找到的文件执行COMMAND命令操作,并且每个文件操作前都提示是否OK
-exec COMMAND {} \; :对查找到的文件直接执行COMMAND命令
注:{} 表示查找到的文件
find use in conjunction with xargs
xargs能够将前一个命令的结果作为参数传递给后一个命令
对于删除大量文件的时候可能会提示Argument list too long,此时使用xargs可以解决这个问题
例:find / -name "*.log" | xargs -0 rm -f
[root@docker test]# find /sbin/ -perm /7000
/sbin/pam_timestamp_check
/sbin/unix_chkpwd
/sbin/userhelper
/sbin/netreport
/sbin/usernetctl
/sbin/lockdev
/sbin/mount.nfs
/sbin/postdrop
/sbin/postqueue
[root@docker test]# find /sbin/ -perm /7000 | ls -l
total 0
[root@docker test]# find /sbin/ -perm /7000 | xargs ls -Sl
-rwxr-sr-x. 1 root postdrop 260112 Oct 31 2018 /sbin/postqueue
-rwxr-sr-x. 1 root postdrop 218632 Oct 31 2018 /sbin/postdrop
-rwsr-xr-x. 1 root root 117504 Nov 8 2018 /sbin/mount.nfs
-rws--x--x. 1 root root 40312 Jun 10 2014 /sbin/userhelper
-rwsr-xr-x. 1 root root 36280 Apr 11 2018 /sbin/unix_chkpwd
-rwsr-xr-x. 1 root root 11376 Oct 31 2018 /sbin/usernetctl
-rwsr-xr-x. 1 root root 11216 Apr 11 2018 /sbin/pam_timestamp_check
-rwx--s--x. 1 root lock 11208 Jun 10 2014 /sbin/lockdev
-rwxr-sr-x. 1 root root 7208 Oct 31 2018 /sbin/netreport
查找/usr/share/目录下的.jpg的文件并打包压缩
find /usr/share -iname "*.jpg" | xargs tar -Pzcf images.tar.gz
Compression packing
压缩是以牺牲CPU时间来换取磁盘空间为目的
Common tools:
compress/uncompress,
文件以.Z结尾
使用:
compress file :直接压缩文件,压缩完源文件变成.Z结尾的文件
compress -c file :将压缩结果直接输出显示,与输出重定向一同使用可实现不删除源文件压缩
compress -c file > file.Z
compress -d file.Z 解压缩与uncompress相同
zcat file.Z 直接查看压缩文件
gzip/gunzip,
文件以.gz结尾
-c, -d:与compress相同
-# :指定压缩比为#(1-9)默认为6,值越大,压缩比越大
zcat file.gz 直接查看压缩文件
bzip2/bunzip2,
以.bz2结尾
-d :解压缩
-#:指定压缩比
-k: 保留源文件
bzcat file.bz2 直接查看压缩文件
xz/unxz,
文件以.xz结尾
-d:解压缩
-#:指定压缩比
-k:保留源文件
xzcat file.xz 直接查看压缩文件
zip/unzip
zip -r test.zip /test/
unzip test.zip
tar,归档
tar [OPTION]... FILE...
1)创建归档
-cf test.tar testfile
2) 展开归档
-xf /test.tar -C /PATH :-C指定展开归档文件路径,不加为当前路径
-tf 直接查看归档文件的文件列表
-p 保留权限
-r 追加文件到归档文件中
直接归档并压缩
-zcf testfile.tar.gz testfile...
-zxf 解压缩并展开归档
-jcf testfile.tar.bz2 testfile...
-jxf
-Jcf testfile.tar.xz testfile...
-Jxf
--exclude 排除文件
tar -zcvf /test.tgz --exclude=/var/log/messages.Z /var/log
-T filelist 从文件中读取需要打包的文件列表
-X filelist 从文件中读取要排除的文件列表