find
-perm 775 按文件权限查找。
-exec find命令对匹配的文件执行该参数所给出的s h e l l命令。相应命令的形式为' c o m m -
and' {} \;,注意{ }和\;之间的空格。
-bash-3.2$ find . -name registry.xml -exec file {} \;
./registry.xml: XML 1.0 document text
-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的s h e l l命令,
在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
< file ... ./registry.xml > ? yes
-bash-3.2$ mkdir -p test/test1/test2
-bash-3.2$ cd test
-bash-3.2$ touch lo test1/lo test1/test2/lo
-bash-3.2$ find . -path "./test1/test2" -prune -o -name "lo" -print
./lo
./test1/lo
-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o -print 的简写表达式按顺序求值,
-a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path "/usr/sam" 为真,则求值 -prune , -prune 返回真,
与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,
-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。
if -path "/usr/sam" then
-prune
else
-print
#find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print
-user
-group
ctime含inode信息修改的时间.
mtime只指文件内容建立或修改的时间
atime
用touch可以写出你想要的任何时间的文件,然后用-newer ,! -newer选项即可成功
touch
-a
file
#modify atime to now
-m
file
#modify mtime to now
-r refFile
#modify time to same of refFile
-t Time [[CC]YY]MMDDhhmm[.SS]
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
$ find / -mtime -5 -print
为了在/ v a r / a d m目录下查找更改时间在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print
-newer file1 ! -newer file2
比file1新但是比file2旧的文件
-size +100000c 大于100000字节的文件
为了在当前目录下查找长度超过1 0块的文件(一块等于5 1 2字节),可以用:
$ find . -size +10 -print
为了在/logs目录中查找更改时间在5日以前的文件并删除它们,可以用:
$ find logs -type f -mtime +5 -exec rm {} \;
使用mount选项
在当前的文件系统中查找文件(不跨越其他文件系统),可以使用f i n d命令的m o u n t选项。
在下面的例子中,我们从当前目录开始查找位于本文件系统中文件名以X C结尾的文件:
$ find . -name "*.XC" -mount -print
-nouser 、nogroup 查找无有效属主的文件,即该文件的属主在/ e t c / p a s s w d中不存在。
/etc/fstab
本系统中有关文件系统的信息
-cpio 对匹配的文件使用c p i o命令,将这些文件备份到磁带设备中。
-follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-depth 广度优先
设置suid位
$ find . -type f -perm 4755 -print
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径,可以用:
$ find / -type f -size 0 -exec ls -l {} \;
为了查找/var/logs目录中更改时间在7日以前的普通文件,并删除它们,可以用:
$ find /var/logs -type f -mtime +7 -exec rm {} \;
为了查找系统中所有属于a u d i t组的文件,可以用:
$find /-name -group audit -print
我们的一个审计系统每天创建一个审计日志文件。日志文件名的最后含有数字,这样我
们一眼就可以看出哪个文件是最新的,哪个是最旧的。A d m i n . l o g 文件编上了序号:
admin.log . 0 0 1、a d m i n . l o g . 0 0 2等等。下面的f i n d命令将删除/ l o g s目录中访问时间在7日以前、
含有数字后缀的a d m i n . l o g文件。该命令只检查三位数字,所以相应日志文件的后缀不要超过
999。
$find /logs -name 'admin.log[0-9][0-9][0-9]' -atime +7 -exec rm {} \;
为了查找当前文件系统中的所有目录并排序,可以用:
$find . -type d -print -local -mount |sort
为了查找系统中所有的rmt磁带设备,可以用:
$find /dev/rmt -print