红联Linux门户
Linux帮助

Linux下find命令详解

发布时间:2014-12-16 21:38:45来源:linux网站作者:linux人

Linux中find常见用法示例.
find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} \;


#-print 将查找到的文件输出到标准输出
#-exec    command    {} \; -----将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
-name    filename   #查找名为filename的文件
-perm #按执行权限来查找
-user     username  #按文件属主来查找
-group groupname  #按组来查找
-mtime    -n +n     #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime     -n +n    #按文件访问时间来查GIN: 0px">-perm  #按执行权限来查找
-user     username  #按文件属主来查找
-group groupname  #按组来查找
-mtime    -n +n     #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime     -n +n    #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime     -n +n    #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup    #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer    f1 !f2    找文件,-n指n天以内,+n指n天以前
-ctime     -n +n    #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup    #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer    f1 !f2    #查更改时间比f1新但比f2旧的文件
-typeb/d/c/p/l/f    #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c]    #查长度为n块[或n字节]的文件
-depth#使查找在进入子目录前先行查找完本目录
-fstype     #查更改时间比f1新但比f2旧的文件
-mount#查文件时不跨越文件系统mount点
-follow     #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune#忽略某个目录


1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名
A) find    /tmp    -name    "*.h"    | xargs    -n50    grep SYSCALL_VECTOR
B) grep    SYSCALL_VECTOR    /tmp/*.h | cut     -d':'    -f1| uniq > filename
C) find    /tmp    -name "*.h"    -exec grep "SYSCALL_VECTOR"    {}    \; -print

2)find / -name filename -exec rm -rf {} \;
find / -name filename -ok rm -rf {} \;

3)比如要查找磁盘中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;

4)将find出来的东西拷到另一个地方
find *.c -exec cp '{}' /tmp ';'
如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir

6)查找2004-11-30 16:36:37时更改过的文件
# A=`find ./ -name "*php"` |    ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16:36:37


二、linux下find命令的用法


1. 基本用法:
find / -name 文件名
find ver1.d ver2.d -name '*.c' -print    查找ver1.d,ver2.d *.c文件并打印
find . -type d -print 从当前目录查找,仅查找目录,找到后,打印路径名。可用于打印目录结构。


2. 无错误查找:
find / -name access_log 2 >/dev/null


3. 按尺寸查找:
find / -size 1500c (查找1,500字节大小的文件,c表示字节)
find / -size +1500c (查找大于1,500字节大小的文件,+表示大于)  
find / -size +1500c (查找小于1,500字节大小的文件,-表示小于)

  
4. 按时间:
find / -amin n 最后n分钟
find / -atime n 最后n天
find / -cmin n 最后n分钟改变状态
find / -ctime n 最后n天改变状态


5. 其它:
find / -empty 空白文件、空白文件夹、没有子目录的文件夹
find / -false 查找系统中总是错误的文件
find / -fstype type 找存在于指定文件系统的文件,如type为ext2
find / -gid n 组id为n的文件
find / -group gname 组名为gname的文件
find / -depth n 在某层指定目录中优先查找文件内容
find / -maxdepth levels 在某个层次目录中按递减方式查找


6. 逻辑
-and 条件与 -or 条件或


7. 查找字符串
find . -name '*.html' -exec grep 'mailto:'{}