搜索
locate
使用locate的时候,系统初始安装的时候,locate引用的**/var/lib/mlocate/mlocate.db这个库还没有生成。因为无法采用;使用updatedb**生成该库;由于建立时需要进行全盘扫描,建立文件的引用,会瞬间占用磁盘IO,影响生产IO;建议再系统初始化的时候进行手动创建该库
新增的文件,不一定能找得到;库不能够实时更新;要想找到文件,还需要再执行updatedb更新索引;建立库的时候对性能磁盘IO有一定影响。
适合:寻找相对固定的文件
-i
不区分大小写的搜索
-n
-n N只列出前N个
-r
支持正则表达式
find
特点
实时查找工具,通过遍历指定路径完成文件查找
特点:
查找速度略慢;
精确查找;
实时查找;
可能只搜索用户具备读取和执行权限的目录
语法
默认具有递归行为
find /etc -name f1.txt
-maxdepth level
最大搜索目录深度,指定目录下的文件为第一级
-mindepth level
最小搜索目录深度
-depth
先处理目录内的文件,再处理目录本身(指定目录)
-name
-name “文件名称”,支持通配符,,?,[],[^]
-iname “文件名称”,不区分字母大小写
-inum n 按inode号查找
-samefile name 相同inode号的文件
-links n 链接数为n的文件
-regex “PARRERN” 以正则表达式**匹配整个文件路径***,而非文件名
-name 后跟的文件名,用通配符表示的要加双引号
根据属主、属组查找
-user USERNAME
查找属主为指定用户(UID)的文件
-group GRPNAME
查找属组为指定组(GID)的文件
-uid UserID
-gid GroupID
-nouser
查找没有属主的文件
-nogroup
查找没有属组的文件
根据文件Type查找
-type TYPE
f普通文件
d目录文件
l符号链接文件
s套接字文件
b块设备文件
c字符设备文件
p管道文件
-empty
find /app -type d -empty
查找条件(-a,-o)
组合条件
与:-a
或:-o
非:-not !
find示例
排除搜索某个文件夹之外的其他特征文件
在/etc下搜索.conf结尾的文件,排除/etc/sane.d该文件夹下的.conf文件
根据文件大小
搜索的文件大小是按照一定大小区间进行搜索的
-size 单位:k,M,G,c(byte)
find -size 10k
find size +1M
unit:(#-1,#]
-unit:[0,#-1]
+unit:(#,)
!
根据时间戳
根据权限查找
xargs
很多命令不支持管道来传递参数,xargs用于产生命令参数
把一些命令的参数,当传递的参数过多时,会导致命令失败。现在将传递 参数一个一个的进行传送。
怎么让一个命令 的参数自动生成
参数传递
xargs rm -f
也可以将文本直接传递给xargs,进行命令执行
-n
批量创建用户
useradd只支持标准的一个参数,现用xargs每行传递一个参数(-n1)给useradd
ls查询传递过来的参数!
删除文件时的问题
find示例
-exec 查找的文件,进行复制或者删除 的时候,不进行提示询问
-ok 查找的文件,进行复制或者删除 的时候,提示询问
练习
压缩工具
compress
compress m.log压缩成后缀为.Z的文件,原有文件不存在。
解压缩
uncompress m.log.Z
-d
解压缩
compress -d m.log.Z
-c
compress -c m.log > m.log.Z
-c会进行标准输出,然后利用重定向到新 的文件中,不删除原文件
gzip
压缩
进行压缩时,建议不对原始文件进行压缩,利用-c,进行标准输出,不改变原始文件。
gzip m.log
解压缩
gzip -d m.log
gunzip m.log.gz
-c
结果输出至标准输出,保留原文件不改变
压缩比
-#,-后跟一个数字(1-9),值越大压缩比越大
查看压缩文件内的内容
-f
从屏幕中获取标准输入,然后打印压缩后的效果
bzip2
-k
keep,依然保留原始文件
-d
解压缩
bzip2 -d file2.bz2
bunzip2 file2.bz2
-#
1-9压缩比,默认是9
不显式解压缩的前提下看文件内容
bzcat m.bz2
xz
xz新的压缩工具,压缩比最高,但对于大量数据压缩时,花费时间较长
-k
-d
-#
解压缩unxz
未解压缩进行查看 xzcat file.xz
打包工具
zip
zip -r /backup/sysconfig /etc/sysconfig/
解包解压缩
unzip sysconfig.zip
cat /var/log/messages | zip messages -
用-表示管道前 的标准输入
unzip -p messages > message
把压缩生成 的文件进行解压缩,重定向到新的文件中
tar
打包
tar -cpvf /PATH/file.tar FILE
预览tar包文件
tar -tvf m.tar
解包
默认是解在当前目录中
tar -xvf m.tar
向tar包中追加文件
tar -rf etc.tar /boot/vmlinux-3.10.0-957.el7.x86_64
向etc.tar这个包中追加后跟的这个文件
确认追加成功:
tar -tvf etc.tar
打包压缩一起用
tar -zcvf etc.tar.gz /etc/ .gz后缀
tar -jcvf etc.tar.bz2 /etc/ .bz2后缀
解压缩解包一起用
tar -xvf etc.tar.gz /etc/
统计某种文件多少行
判断命令执行的时长
time
排除压缩目录里的指定文件
–exclude
指定某个文件中的文件夹列表中的文件进行打包
-X 指定包含要排除的文件列表
split(文件切割)
用split将压缩文件切分成1k大小的文件
将切分的压缩文件进行合并