学习啦 > 学习电脑 > 操作系统 > Linux教程 >

linux中的find命令有哪些用法参数设置是什么

时间: 加城1195 分享

  Linux中的find命令主要用于各种查找,很常用,其中包括了很多的参数选项,那么具体参数有什么呢?怎么用?下面由学习啦小编为大家整理了linux中的find命令参数的相关知识,希望对大家有帮助!

  linux中的find命令详解

  一.find命令

  基本格式:find path expression

  1.按照文件名查找

  (1)find / -name httpd.conf  #在根目录下查找文件httpd.conf,表示在整个硬盘查找

  (2)find /etc -name httpd.conf  #在/etc目录下文件httpd.conf

  (3)find /etc -name '*srm*'  #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件

  (4)find . -name 'srm*'   #表示当前目录下查找文件名开头是字符串‘srm’的文件

  2.按照文件特征查找

  (1)find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)

  (2)find / -atime -2   # 查找在系统中最后48小时访问的文件

  (3)find / -empty   # 查找在系统中为空的文件或者文件夹

  (4)find / -group cat   # 查找在系统中属于 group为cat的文件

  (5)find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)

  (6)find / -mtime -1   #查找在系统中最后24小时里修改过的文件

  (7)find / -user fred   #查找在系统中属于fred这个用户的文件

  (8)find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)

  (9)find / -size -1000k   #查找出小于1000KB的文件

  3.使用混合查找方式查找文件

  参数有: !,-and(-a),-or(-o)。

  (1)find /tmp -size +10000c -and -mtime +2   #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件

  (2)find / -user fred -or -user george   #在/目录下查找用户是fred或者george的文件文件

  (3)find /tmp ! -user panda  #在/tmp目录中查找所有不属于panda用户的文件

  find命令参数1.使用name选项

  文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。 可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。 不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.log的文件,使用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。

  find ~ -name "*.log" -print

  想要在当前目录及子目录中查找所有的‘ *.log‘文件,可以用:

  find . -name "*.log" -print

  想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:

  find . -name "[A-Z]*" -print

  想要在/etc目录中查找文件名以host开头的文件,可以用:

  find /etc -name "host*" -print

  想要查找$HOME目录中的文件,可以用:

  find ~ -name "*" -print 或find . -print

  要想让系统高负荷运行,就从根目录开始查找所有的文件。

  find / -name "*" -print

  如果想在当前目录查找文件名以一个个小写字母开头,最后是4到9加上.log结束的文件:

  命令:

  find . -name "[a-z]*[4-9].log" -print

  输出:

  [root@localhost test]# ll

  总计 316

  -rw-r--r-- 1 root root 302108 11-13 06:03 log2012.log

  -rw-r--r-- 1 root root 61 11-13 06:03 log2013.log

  -rw-r--r-- 1 root root 0 11-13 06:03 log2014.log

  -rw-r--r-- 1 root root 0 11-13 06:06 log2015.log

  drwxr-xr-x 6 root root 4096 10-27 01:58 scf

  drwxrwxr-x 2 root root 4096 11-13 06:08 test3

  drwxrwxr-x 2 root root 4096 11-13 05:50 test4

  [root@localhost test]# find . -name "[a-z]*[4-9].log" -print

  ./log2014.log

  ./log2015.log

  ./test4/log2014.log

  [root@localhost test]#

  find命令参数2.用perm选项

  按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。

  如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:

  [root@localhost test]# find . -perm 755 -print

  .

  ./scf

  ./scf/lib

  ./scf/service

  ./scf/service/deploy

  ./scf/service/deploy/product

  ./scf/service/deploy/info

  ./scf/doc

  ./scf/bin

  [root@localhost test]#

  还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-005相当于555,

  命令:

  find . -perm -005

  输出:

  [root@localhost test]# ll

  总计 316

  -rw-r--r-- 1 root root 302108 11-13 06:03 log2012.log

  -rw-r--r-- 1 root root 61 11-13 06:03 log2013.log

  -rw-r--r-- 1 root root 0 11-13 06:03 log2014.log

  -rw-r--r-- 1 root root 0 11-13 06:06 log2015.log

  drwxr-xr-x 6 root root 4096 10-27 01:58 scf

  drwxrwxr-x 2 root root 4096 11-13 06:08 test3

  drwxrwxr-x 2 root root 4096 11-13 05:50 test4

  [root@localhost test]# find . -perm -005

  .

  ./test4

  ./scf

  ./scf/lib

  ./scf/service

  ./scf/service/deploy

  ./scf/service/deploy/product

  ./scf/service/deploy/info

  ./scf/doc

  ./scf/bin

  ./test3

  [root@localhost test]#

  find命令参数3.忽略某个目录

  如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。如果希望在test目录下查找文件,但不希望在test/test3目录下查找,可以用:

  命令:

  find test -path "test/test3" -prune -o -print

  输出:

  [root@localhost soft]# find test -path "test/test3" -prune -o -print

  test

  test/log2014.log

  test/log2015.log

  test/test4

  test/test4/log2014.log

  test/test4/log2013.log

  test/test4/log2012.log

  test/scf

  test/scf/lib

  test/scf/service

  test/scf/service/deploy

  test/scf/service/deploy/product

  test/scf/service/deploy/info

  test/scf/doc

  test/scf/bin

  test/log2013.log

  test/log2012.log

  [root@localhost soft]#

  find命令参数4.使用find查找文件的时候怎么避开某个文件目录

  实例1:在test 目录下查找不在test4子目录之内的所有文件

  命令:

  find test -path "test/test4" -prune -o -print

  输出:

  [root@localhost soft]# find test

  test

  test/log2014.log

  test/log2015.log

  test/test4

  test/test4/log2014.log

  test/test4/log2013.log

  test/test4/log2012.log

  test/scf

  test/scf/lib

  test/scf/service

  test/scf/service/deploy

  test/scf/service/deploy/product

  test/scf/service/deploy/info

  test/scf/doc

  test/scf/bin

  test/log2013.log

  test/log2012.log

  test/test3

  [root@localhost soft]# find test -path "test/test4" -prune -o -print

  test

  test/log2014.log

  test/log2015.log

  test/scf

  test/scf/lib

  test/scf/service

  test/scf/service/deploy

  test/scf/service/deploy/product

  test/scf/service/deploy/info

  test/scf/doc

  test/scf/bin

  test/log2013.log

  test/log2012.log

  test/test3

  [root@localhost soft]#

3996221