部分find命令使用

linux中的文件查找远远比windows中文件查找要强大的多,而且是更加的迅速,以下是我通过阅读网上的文档整理了一部分linux中文件查找find的命令,及其命令含义解释。

一.命令格式: 

    find pathname -options [-print -exec -ok ...] 

二.命令功能:

    用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)

三.命令参数含义:

pathname: find命令所查找的目录路径。例如用.来表示当前目 录,用/来表示系统根目录。 

-print: find命令将匹配的文件输出到标准输出。 

-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{   }和\; 之间的空格。  

-ok: 和-exec的作用相同,只不过以这种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

四.命令选项:

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

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/80/4C/wKioL1c9fgWhnuADAABDQMaYhGA941.png" title="无标题.png" alt="wKioL1c9fgWhnuADAABDQMaYhGA941.png" />

-perm   按照文件权限来查找文件。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/80/4B/wKioL1c9ezPzb6TnAADHmHsvxXQ101.png" title="无标题.png" alt="wKioL1c9ezPzb6TnAADHmHsvxXQ101.png" />-prune  使用这个选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么                -prune将被find命令忽略。 

-user   按照文件属主来查找文件。

-group 按照文件所属的组来查找文件。

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/80/4C/wKioL1c9fsWzJHrcAAA7oTTMjBA402.png" title="无标题.png" alt="wKioL1c9fsWzJHrcAAA7oTTMjBA402.png" />

-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time 选项相同。 

[root@localhost class_1]# ls
cmd  file  kk  kk2  test  TEST.c
[root@localhost class_1]# vim TEST.c 
[root@localhost class_1]# gcc -o test TEST.c 
[root@localhost class_1]# ./test 
change world.
linux
[root@localhost class_1]# find . -amin -10 //查找在系统最后10分钟访问的文件
.
./test
./TEST.c
./cmd
[root@localhost class_1]# find . -atime -2   //查找在系统最后48小时访问的文件
.
./test
./TEST.c
./kk2
./cmd
[root@localhost class_1]# find . -mmin -5   //查找在系统在最后5分钟修改过的文件
.
./test
./TEST.c
./cmd
[root@localhost class_1]# find . -mtime -5   //查找系统在最后5小时修改过的文件
.
./.file
./test
./TEST.c
./kk2
./kk2/test.c
./kk
./file
./cmd
[root@localhost class_1]# find . -cmin -5 //查找在系统在最后5分钟被改变状态的文件
.
./test
./TEST.c
./cmd
[root@localhost class_1]# find . -ctime -1//查找在系统在最后24小时被改变状态的文件
.
./test
./TEST.c
./cmd

//文件状态判断:

//-mtime: 指定时间文件内容被修改过
//-ctime: 指定时间文件权限被修改过
//-atime: 指定时间文件被读取过

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

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

[root@localhost home]# ll
total 12
drwx------.  4 curry curry 4096 May 19 13:32 curry
drwx------. 27 jf    jf    4096 May 18 22:47 jf
drwx------. 35 xjf   xjf   4096 May 19 13:29 xjf  
[xjf@localhost home]$ ll
总用量 8
drwx------. 27 jf  jf  4096 5月  18 22:47 jf
drwx------. 35 xjf xjf 4096 5月  19 13:29 xjf   
[root@localhost ~]# find / -nouser           //查找系统当中作废用户的文件
/var/spool/mail/curry
find: `/proc/2531/task/2531/fd/5': No such file or directory
find: `/proc/2531/task/2531/fdinfo/5': No such file or directory
find: `/proc/2531/fd/5': No such file or directory
find: `/proc/2531/fdinfo/5': No such file or directory

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

-type 查找某一类型的文件,诸如:

    b - 块设备文件。 

    d - 目录。 

    c - 字符设备文件。 

    p - 管道文件。 

    l - 符号链接文件。

    f - 普通文件。 

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/80/4C/wKioL1c9gDWwfTDlAACwnGMevnY471.png" title="无标题.png" alt="wKioL1c9gDWwfTDlAACwnGMevnY471.png" />

-size n:[c] 查找文件长度为n块的文件,带有c时表式文件长度以字节计。

[root@localhost test]# cd Test_1/
[root@localhost Test_1]# ll
total 12
-rwxr-----. 1 jf   jf    347 May 14 15:58 a.c
-rwx-wx-wx. 1 root root 4691 May 14 15:58 a.exe
[root@localhost /]# find / -size 4691c  //查找大小为4691字节的文件

//-size表示文件大小,c表示字节,还有k,M,G

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/80/44/wKiom1c8PKWTsDNgAABfATeG0uY145.png" title="无标题.png" alt="wKiom1c8PKWTsDNgAABfATeG0uY145.png" />

[root@localhost /]# find / -size +20000000c //查找文件大小大于20000000字节的文件

//+表示大于前面这个数的文件,-表示小于前面这个数的文件

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/80/44/wKiom1c8PcbgR_3EAAFkV7jp4lg508.png" title="无标题.png" alt="wKiom1c8PcbgR_3EAAFkV7jp4lg508.png" />

[root@localhost class_1]# ll -al
total 44
drwxrwxr-x. 3 xjf xjf  4096 May 13 21:45 .
drwxrwxr-x. 8 xjf xjf  4096 May 14 23:04 ..
-rw-rw-r--. 1 xjf xjf 15280 May 13 21:45 cmd
-rw-rw-r--. 1 xjf xjf   290 May 13 21:11 file
-rw-r--r--. 1 xjf xjf     0 May 13 20:44 .file
-rw-rw-r--. 1 xjf xjf     0 May 13 21:12 kk
drwxrwxr-x. 2 xjf xjf  4096 May 13 20:49 kk2
-rwxrwxr-x. 1 xjf xjf  4682 May 13 21:23 test
-rw-rw-r--. 1 xjf xjf    66 May 13 21:23 TEST.c
[root@localhost class_1]# find . -empty    //查找空文件
./.file
./kk

-depth:在查找文件时,首先查找当前目录中的文件,然后再在其它目录中查找。 

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/80/4F/wKiom1c9gMjgmUPoAAA_7OgZ3a4220.png" title="无标题.png" alt="wKiom1c9gMjgmUPoAAA_7OgZ3a4220.png" />

-maxdepth: 在某个层次的目录中按照递减方法查找

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/80/4F/wKiom1c9gYnTeMA6AABw7dBPKIA269.png" title="无标题.png" alt="wKiom1c9gYnTeMA6AABw7dBPKIA269.png" />

-maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前.目录子目录中查找一个名叫fred的文件,我们可以使用如下命令
find . -maxdepth 2 -name fred
假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在./sub1/sub2 /fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。

-fstype:查找位于某个类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中

               找到,该配置文件中包含了本系统中有关文件系统的信息。 

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

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

-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

哦(you)千(need)呐(weight)650) this.width=650;" src="http://img.baidu.com/hi/tsj/t_0012.gif" alt="t_0012.gif" />

本文出自 “Pzd流川枫” 博客,请务必保留此出处http://xujiafan.blog.51cto.com/10778767/1775121

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章