一、文件查找
非实时查找(数据库查找)locate;实时查找find
locate:从系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db查找,但是依赖于事先构建的索引;
索引的构建是在系统较为空闲时自动进行,管理员手动的更新数据库(updatedb),得用updatedb命令跟新数据库,才能快速查找,也要根据权限搜索;
索引构建过程需要遍历整个根文件系统,极其消耗资源;
1.1 locate
locate搜索特点:查找速度快;模糊查找;非实时查找;搜索的文件的全路径,不仅仅是文件名
可能只搜索用户具备读取和执行权限的目录
locate KEYWORD
v -i 执行区分大小写的搜索 ; -n N 只列举前N 个匹配项目 ;-r:支持正则表达式
v locate foo
• 搜索名称或路径中带有“foo ”的文件
v locate -r ‘\.foo$’
• 使用Regex 来搜索以“.foo ”结尾的文件
1.2 find 查找条件
find: 实时查找工具,通过遍历指定路径完成文件查找;
v find 工作特点:查找速度略慢;精确查找;实时查找; 可能只搜索用户具备读取和执行权限的目录
find option 查找路径|查找条件|处理动作 (全盘搜索影响磁盘性能)
查找路径:指定具体目标路径;默认为当前目录;处理动作:对符合条件的文件做操作,默认输出至屏幕
查找条件:指定的查找标准,可对文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件。
1.2.1根据文件名和inode查找
-name " 文件名称" :支持使用通配符 *, ?, [], [^]等 find / -name “*.txt” ; find /var –name “*log*”
find -name snow.png ( 搜索名为snow.png)
-iname " 文件名称" :不区分字母大小写 ; -inum n 按inode 号查找
find -iname snow.png (不分大小写地搜索名为snow.png 、Snow.png、SNOW.PNG)
-samefile name 相同inode 号的文件 ; -links n 链接数为n 的文件
-regex "PATTERN" :以PATTERN 匹配整个文件路径字符串,而不仅仅是文件名称
1.2.2根据属主、属组查找
find -user joe -group joe(搜索被用户joe 以及组群joe)
-user USERNAME :查找属主为指定用户(UID) 的文件 ;-group GRPNAME: 查找属组为指定组(GID) 的文件
-uid UserID :查找属主为指定的UID 号的文件 ; -gid GroupID :查找属组为指定的GID 号的文件
-nouser :查找没有属主的文件 ; -nogroup:查找没有属组的文件
1.2.3 根据文件类型查找
-type TYPE: f: 普通文件 ;d: 目录文件; l: 符号链接文件; s :套接字文件
b: 块设备文件; c: 字符设备文件 ; p: 管道文件
find /home –type d -ls (找到家目录下的目录文件,并列举出来)
1.2.4 组合条件
与:-a ; 或:-o ; 非:-not, !
v (非 P) 或 (非 Q) = 非(P 且 Q) ; (非 P) 且 (非 Q) = 非(P 或 Q)
v !A -a !B = !(A -o B) ; !A -o !B = !(A -a B)
find -user joe -not -group joe ; find -user joe -o -user jane
find -not \( -user joe -o -user jane \) ;find / -user joe -o -uid 500
1.2.4.1find示例
找出/tmp 目录下,属主不是root ,且 文件名 不以f 开头的 文件
find /tmp \( -not -user root -a -not -name 'f*' \) –ls ;
find /tmp -not \( -user root -o -name 'f*' \) –ls
v 排除目录示例:查找/etc/ 下,除/etc/sane.d 目录的其它所有.conf 后缀的文件
find /etc -path ‘/etc/sane.d’ -a –prune -o -name “*.conf” -print
1.2.5根据文件大小来查找
-size [ +|- ] #UNIT常用单位:k, M, G
#UNIT: (#-1, #] ;如:6k 表示(5k,6k] -#UNIT :[0,#-1] ;如:-6k 表示[0,5k]
+#UNIT :(#, ∞ ) ; 如:+6k 表示(6k ,∞)
find /var -size +1M -a -size -10M | xargs ls -lh
1.2.6根据时间戳
以“天”为单位;-atime [+|-]# ;#:[#,#+1) ;+#: [#+1, ∞ ] ;-#: [0,#)
-mtime ;-ctime
以“分钟”为单位:-amin ;-mmin ;-cmin
1.2.7 根据权限查找
-perm [/|-] MODE ;mode:精确权限匹配
/MODE (+MODE):任何一类(u,g,o)对象的权限中只要能一位匹配即可; 或的关系
-MODE:每一类对象都必须同时拥有指定权限; 与的关系 ,没有即为0表示不关注
find -perm 755 :会匹配权限模式恰好是755 的文件
只要当任意人有写权限时,find -perm +222 就会匹配;只有当每个人都有写权限时,find -perm -222 才会匹配;只有当其它人(other )有写权限时,find -perm -002才会匹配处理动作:
-print :默认的处理动作,显示至屏幕; -ls :类似于对查找到的文件执行“ls -l” 命令
v -delete :删除查找到的文件; -fls file :查找到的所有文件的长格式信息保存至指定文件中
v -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND 指定的命令;
1.2.7.1 find示例
对于每个文件执行命令之前,都会交互式要求用户确认
例如:find /tmp -ctime +3 -user joe -ok rm {} \(提示删除存在时间超过3天以上的joe 的临时文件)
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND 指定的命令
v {}: 用于引用查找到的文件名称自身
v find 传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
例如:v find -name “*.conf” -exec cp {} {}.orig \ (备份配置文件,添加.orig 这个扩展名)
find ~ -perm -002 -exec chmod o-w {} \ (在你的主目录中寻找可被其它用户写入的文件)
find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \
(在/data下查找权限为644以.sh结尾的普通文件改文件为权限755)
1.3参数代换
xargs 用于产生某个命令的参数
xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成为arguments
v 注意:文件名或者是其他意义的名词内含有空格符的情况
有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决
v 示例:find | xargs COMMAND ; find /sbin -perm +7000 | xargs ls -l
二、压缩、解压缩
2.1 compress /uncompress
compress [-dfvcVr] [-b maxbits] [file …]
-d: 解压缩,相当于 ;-c: 结果输出至标准输出, 不删除原文件 ;-v: 显示详情
v uncompress 解压缩:zcat file.Z >file
2.2 gzip/gunzip
gzip [OPTION]… FILE …
–d: 解压缩,相当gunzip ;-c: 将压缩或解压缩的结果输出至标准 -#:1-9 ,指定压缩比,值越大压缩比越大
v zcat :不显式解压缩的前提下查看文本文件内容 默认为6
v 2.1实例:
gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
2.3 bzip2
bzip2 [OPTION]… FILE …
-k: keep, 保留原文件 ;-d :解压缩 ;-# :1-9 ,压缩比,默认为6
v bzcat :不显式解压缩的前提下查看
2.4 xz
xz [OPTION]… FILE …
-k: keep, 保留 原文件 ;-d :解压缩 ;-# :1-9 ,压缩比,默认为 为6
v xzcat: 不显式解压缩的前提下查看
xz:互联网上的新软件一般都用此压缩工具 ,压缩比大,但是压缩的时间也长,解压缩耗时也久一些
2.5 zip
虽然压缩比较差,但是能与windows兼容
打包压缩:zip –r sysconfig sysconfig/ ; 解包解压缩:unzip sysconfig.zip
cat /var/log/messages | zip message –
unzip -p message > message
三、归档工具
3.1 tar工具
(现在企业里面常用磁带归档工具 、打包工具)
–c:创建新的档案文件(打包) ;-t:列出打包内容 ;-x:从档案文件中释放文件(拆包)
-f:使用的归档名,立即接档名,不加参数 ; -p:使用原文件的属性 ;-v:压缩过程可见
-r:追加 -zcvf :打包压缩,,但是不会破坏原来的文件,会把目录中的/删除
(1) 创建归档 tar -c -f / PATH/TO/SOMEFILE .tar FILE… 指定解压目录file
(2) 追加文件至归档: 注:不支持对压缩文件追加 tar -r -f /PATH/TO/SOMEFILE.tar FILE…
(3) 查看归档文件中的文件列表 tar -t -f /PATH/TO/SOMEFILE .tar
(4) 展开归档(编译时用到) tar -x -f /PATH/TO/SOMEFILE .tar ; tar -x -f /PATH/TO/SOMEFILE .tar -C /PATH/
(5) 结合压缩工具实现:归档并压缩 -j: bzip2, -z: gzip, -J: xz
-T 选项指定输入文件;-X 选项指定包含要排除的文件列表
tar zcvf mybackup.tgz -T /root/includefilelist –X /root/excludefilelist
3.2 spilt分割打包文件
分割大的 tar 文件为多份小文件:
split –b 1M -d Size tar-file-name prefix-name ;split –b 1M –d mybackup.tgz mybackup-parts
合并:cat mybackup-parts* > mybackup.tgz
3.3 cpio复制到文件
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。
cpio [ 选项] > 文件名或者设备名
v cpio [ 选项] < 文件名或者设备名
v 选项:-o 将文件拷贝打包成文件或者将文件输出到设备上
-i 解包,将打包文件解压或将设备上的备份还原到系统
-t 预览,查看文件内容或者输出到设备上的文件内容
-v 显示打包过程中的文件名称。
-d 解包生成目录,在cpio 还原时,自动的建立目录
将etc 目录备份:find ./etc -print |cpio -ov >etc.cpio
v 内容预览:cpio –tv < etc.cpio
v 要解包文件:cpio –iv <etc.cpio ;cpio –idv < etc.cpio
原创文章,作者:lyx,如若转载,请注明出处:http://www.178linux.com/61086