ファイルの検索と梱包

見つけます

簡単な紹介

在指定目录下查找文件
find命令用来实时查找指定文件,从指定起始路径开始遍历其下级目录结构完成文件查找

特性:精确且慢

使い方

find [OPTIONS]  [查找路径]  [查找条件]  [处理动作]
查找路径:具体搜索目标,默认为当前路径
查找条件:可以对文件名、大小、文件类型、文件从属、以及权限等进行查找,默认为查找路径下所有文件
处理动作:对匹配到查找条件的文件作出相关处理操作,默认直接输出到标准输出

検索条件

根据文件名:
-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"

処理動作

-print:默认处理动作,输出到标准输出
-ls :查看查找到文件的详细信息
-delete :删除查找到的文件
-fls /PATH :将查找到的文件详细信息保存到指定文件中
-ok COMMAND {} \; :对查找到的文件执行COMMAND命令操作,并且每个文件操作前都提示是否OK
-exec COMMAND {} \; :对查找到的文件直接执行COMMAND命令
注:{} 表示查找到的文件

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

圧縮梱包

压缩是以牺牲CPU时间来换取磁盘空间为目的

一般的なツール:

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 从文件中读取要排除的文件列表

おすすめ

転載: www.cnblogs.com/type1818/p/11300959.html