shell编程:find命令
find . 列出当前目录以及子目录下的所有文件
find . -name "11.png"找到当前目录下名字为11.pngd的文件
find .-name “*.jpg”找到当前目录下目录所有的jpg文件
find .-name"*.jpg" -o -name "*.png"找到当前目录下jpg和png文件
find . -path "*wysiwyg"找出当前目录下路径中包含的wysiwyg的文件路径
find .! -name "*.png"找出当前目录下不是以png结尾的文件
根据文件类型查找
通过 -type 进行文件类型的过滤
f 普通文件
l 符号连接
d目录
c字符设备
b块设备
s套接字
p Fifo
根据文件大小
通过-size来过渡文件尺寸,支持的文件大小单元如下:
b---块(512字节)
c---字节
w--字
k---千字节
M---兆字节
G---吉字节
根据访问修改时间
支持下面的时间类型
访问时间(-atime/天,-amin/分钟),用户最近一次访问时间
修改时间(-mtime/天,-mmin/分钟)文件最后一次修改时间
根据权限
通过 -perm来实现。举例找出当前权限为777的文件
find .-type f -perm 777
根据文件拥有者
find .-type f -user root 找出文件拥有者为roto的文件
找到文件后执行命令
通过-ok和-exec来实现。区别在于,-ok在执行命令前会进行二次确认,-exec不会
eg:删除当前目录下所有的js文件,用-ok效果如下,删除前有二次确认
find .-type f -name "**.js" -ok rm {};
找出空文件
find .-empty
批量删除文件
find ... -exec rn {};
find ...| xargs rm -rf
两者都可以把find命令查找到的结果删除
其区别简单的说是前者把find命令发现的结果一次性传给exec选项,这样当文件太多时就可能出现参数太多的错误,相比较而言,后者就可以避免这个错误,因为xargs命令会分批次的处理结果。