Shell下的find命令

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

你可能感兴趣的:(shell,职场,find,休闲)