linux常用命令--find

来源:互联网 发布:贴图软件 编辑:程序博客网 时间:2024/06/03 22:50

find命令释义:

在某个目录及其子目录下查找文件,可以根据文件名更改时间文件权限文件类型所属用户组等条件查找文件。(注意:不带参数时为只在当前目录下查找)


find命令使用格式:

首先来看看man find里列出的格式:find [-H] [-L] [-P] [-D debugopts] [-0level] [path...] [expression] 

但其实[-H] [-L] [-P] [-D debugopts] [-0level] 这5个选项在平时查找文件时是基本用不上的;

所以find的普遍使用格式是:

find [path] [expression]

path就是指文件的路径,如:.表示当前目录,/表示系统根目录,或者是其它具体的目录

expression的形式通常是“-options [-print -exec -ok...]”:

  • -options是指find命令常用选项,如:-name、-perm、-user、-group、-prune等,后面会有示例详解
  • -print是指find将匹配的文件输出到标准输出
  • -exec指find对匹配的文件执行该参数给出的shell命令。如:find . -name "*.o" -exec rm {} \; 意思是查找出本目录及子目录下的所以.o文件并执行rm命令,主要rm与{}之间有空格,{}与\;之间有空格。还有另外的格式,详情请参考文末的链接
  • -ok作用与-exec一样,格式基本也一样,只是每次执行shell命令是都会询问是否执行,所以说-ok比-exec更安全。示例:find . -name "*.o" -ok ls {} \; 与上面的意思    是一样

下面着重-option参数,如果只是为了查找出某个文件所在位置,那通常可以用这种格式:

find [path] [-option]这就是查找文件所用的最简单格式

path在上面已经介绍,即为指定的目录,如:.或./表示的是当前目录及子目录,/表示根目录,/dir指某个任意目录等

-option可以是:

  • -name:按照文件名查找文件。

find /dir -name filename 在/dir目录及其子目录查找filename的文件;

find /dir -name “*.c” 在/dir目录及其子目录查找扩展名为.c的文件;

  • -mtime n -n +n:modify time文件内容被更改时间来查找文件,n表示n到n+1天之间,-n表示n天以内,+n表示n+1天以前
-atime n -n +n:access time文件被读取或执行的时间,n的意思同上
-ctime n -n +n:change time文件状态改变时间,文件i节点改变的时间,如用chmod可改变ctime,n意思同上
[-mmin] [-amin] [-cmin] n -n +n:把上面的天变成分钟就对应了;

find ./ -mtime 3 在当前目录及子目录下查找3~4天之间内容被更改的文件;

find ./ -mtime -3 在当前目录及子目录下查找3天以内内容被更改的文件;

find ./ -mtime +3 在当前目录及子目录下查找4天以前内容被更改的文件 ;

  • -size n -n +n[c][k][M][G]:以文件的大小查找文件。n表示文件大小,n==n,-n<n,+n>n;c、k、M、G表示n的参数单位;        

find ./ -size n在当前目录及子目录查找等于n块(512字节一块)的文件

find ./ -size nc在当前目录及子目录查找等于n字节的文件

find ./ -size-nk在当前目录及子目录查找小于nkB的文件

find ./ -size+nM在当前目录及子目录查找大于nMB的文件

  • -type [b][d][c][p][l][f]: 查找某一类型的文件

      b:块设备文件;d:目录;c:字符设备文件;p:管道文件;l:符号链接文件;f:普通文件

find / -type d在根目录下查找所以的目录

find / ! -type d在根目录下查找除目录外的所有类型文件

find /dir -type l在dir目录及其子目录下查找所有的符号链接文件

  • -perm:按文件权限查找文件

find /dir -perm 755 -print在dir目录下查找权限为755的文件,文件属主可以读写执行,其它用户可以读执行;-print在前面有介绍,不用这个参数效果也一样

  • -depth:先在当前目录查找文件,再找其子目录查找

find / -name "con.file" -depth它将在根目录匹配所有文件,再进入目录查找

  • -prune:指定不查找文件的目录,若与-depth同时使用则该参数被忽略

find /dir -path “/dir/dir1" -prune -o在/dir目录下及其子目录除了/dir/dir1目录下查找文件

find /dir -path "/dir/dir1" -prune -o -name "*.c"在dir目录下查找除了/dir/dir1目录下的所有c文件

-path是指定查找的路径,为了与-prune指定的路径区别开,没有-path是查不到文件的

-o是prune的一个参数,测试时没有-o屏幕就不会打印出文件的路径

  • -user:按照文件属主查找文件

find ~ -user username -print在$HOME目录中查找属主为username的文件

  • -group:按文件所属的组查找文件

find /dir -group group1在dir目录下查找属于group1用户组的文件

  • -nogroup:查找无有效所属组的文件,即所属的组不在/etc/groups中

find /dir -nogroup -print在dir目录下查找无有效所属组的文件

  • -nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在

find /dir -nouser在dir目录下查找无有效属主的文件

  • -newer file1 ! file2:查找更改时间比file1新但比file2旧的文件

find /dir -newer file1 ! file2

  • -mount:在查找文件时不跨越文件系统mount点

find . name "*.xc" -mount从当前目录查找位于本文件系统中以.xc结尾的文件,不进入其他文件系统

  • -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件


后记:本文大部分参考第一条链接的文章,详情可到第一条链接处查看


参考:http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html

参考:http://blog.csdn.net/abcdef0966/article/details/7607545

参考:http://www.92csz.com/11/921.html

0 0
原创粉丝点击