0x5E——shell编程学习笔记(2)

这篇主要讲find

(1)使用name选项
find . -name "[A-Z]*" -print
在当前目录及子目录中查找以大写字母开头的文件

(2)使用perm选项(按权限查找)
find . -perm 755 -print
在当前目录下查找文件权限位为755的文件。
如果在755前加'-',那就表示755所提到的权限都有即可
如果在755前加'+',表示755提到的权限只有有1个有就可以了

(3) 忽略某个文件
find /apps -name "/apps/bin" -prune -o -name "*file" -print
在/apps目录下查找文件,但不希望在/apps/bin目录下查找,找到的文件以file结尾。这里的第一个-name是指定/apps/bin用的,然后-o好像是配套的。第二个-name是指定待查找的文件的名字

(4)按照更改时间查找文件
find / -mtime -5 -print
在根目录下查找更改时间在5天以内的文件
find /var/adm -mtime +3 -print
在/var/adm下查找更改时间在3天以前的文件

(5)查找比某个文件新或旧的文件
find . -newer newest_file_name ! -newer oldest_file_name -exec ls -l {} \;
找到更改时间介于newest和oldest之间的文件,并列出来。

(6)使用type选项
find /etc ! -type d -print
在/etc下查找所有非目录的其他类型文件
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l - 符号链接文件
f - 普通文件

(7)使用size选项
find [path] -size [+]N[c] -print
如果有'+',则表示“大于”,否则是“恰好”,N即一个数字。如果没有c,则单位是“块”,即512字节,否则单位是“字节”

(8)使用exec或ok来执行shell命令
exec选项后面跟要执行的命令(如ls或ls -l),然后是一对{},一个空格和一个\,最后是一个分号。
find logs -type f -mtime +5 -exec rm {} \;
在logs目录中查找更改时间在5日以前的文件并删除它们
也可以使用安全模式
find . -name "*.LOG" -mtime +5 -ok rm {} \;
每次都会询问是否删除,譬如:
"rm ./nets.log"?,此时输入y或n决定是否删除
例子:
find /etc -name "passwd*" -exec grep "rounder" {} \;
首先匹配所有passwd开头的文件,然后看看其中有没有rounder用户
find . type d -print -local -mount | sort
查找当前文件系统中的所有目录并排序
配合xargs使用,xargs是把得到的输出分段地给下一个命令
find . -type f -print | xargs file
当前的普通文件都分别属于哪类文件

(9)-depth参数,查找进入子目录前优先查找完本目录。如果后面还加一个数字n,那么表示在某曾指定目录中优先查找文件内容。

posted @ 2012-06-09 12:00  cuero  阅读(214)  评论(0编辑  收藏  举报