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

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root       - : log2014.log

-rw-r--r--  root root       - : log2015.log

drwxr-xr-x  root root    - : scf

drwxrwxr-x  root root    - : test3

drwxrwxr-x  root root    - : test4

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

./log2014.log

./log2015.log

./test4/log2014.log

[root@localhost test]#

2.用perm选项:

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

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

[root@localhost test]#  -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

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root       - : log2014.log

-rw-r--r--  root root       - : log2015.log

drwxr-xr-x  root root    - : scf

drwxrwxr-x  root root    - : test3

drwxrwxr-x  root root    - : test4

[root@localhost test]# 

.

./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]#

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]#

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]#

说明:

find [-path ..] [expression]

在路径列表的后面的是表达式

-path "test" -prune -o -print 是 -path "test" -a -prune -o -print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果

-path "test" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "test" -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。

这个表达式组合特例可以用伪码写为:

if -path "test" then

-prune

else

-print

实例2:避开多个文件夹:

命令:

find test \( -path test/test4 -o -path test/test3 \) -prune -o -print

输出:

[root@localhost soft]# find test \( -path test/test4 -o -path test/test3 \) -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

[root@localhost soft]#

说明:

  圆括号表示表达式的结合。  \ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。

实例3:查找某一确定文件,-name等选项加在-o 之后

命令:

find test \(-path test/test4 -o -path test/test3 \) -prune -o -name "*.log" -print

输出:

[root@localhost soft]# find test \( -path test/test4 -o -path test/test3 \) -prune -o -name "*.log" -print

test/log2014.log

test/log2015.log

test/log2013.log

test/log2012.log

[root@localhost soft]#

5.使用user和nouser选项:

按文件属主查找文件:

实例1:在$HOME目录中查找文件属主为peida的文件 

命令:

find ~ -user peida -print

实例2:在/etc目录下查找文件属主为peida的文件:

命令:

find /etc -user peida -print

说明:

实例3:为了查找属主帐户已经被删除的文件,可以使用-nouser选项。在/home目录下查找所有的这类文件

命令:

find /home -nouser -print

说明:

  这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。

6.使用group和nogroup选项:

  就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用:

find /apps -group gem -print

  要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件:

find / -nogroup-print

7.按照更改时间或访问时间等查找文件:

  如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。

  用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。

  希望在系统根目录下查找更改时间在5日以内的文件,可以用:

find / -mtime -5 -print

  为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:

find /var/adm -mtime +3 -print

8.查找比某个文件新或旧的文件:

  如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项。

  它的一般形式为:

newest_file_name ! oldest_file_name

  其中,!是逻辑非符号。

实例1:查找更改时间比文件log2012.log新但比文件log2017.log旧的文件

命令:

find -newer log2012.log ! -newer log2017.log

输出:

[root@localhost test]# ll

总计 

-rw-r--r--  root root  - : log2012.log

-rw-r--r--  root root      - : log2013.log

-rw-r--r--  root root       - : log2014.log

-rw-r--r--  root root       - : log2015.log

-rw-r--r--  root root       - : log2016.log

-rw-r--r--  root root       - : log2017.log

drwxr-xr-x  root root    - : scf

drwxrwxr-x  root root    - : test3

drwxrwxr-x  root root    - : test4

[root@localhost test]# find -newer log2012.log ! -newer log2017.log

.

./log2015.log

./log2017.log

./log2016.log

./test3

[root@localhost test]#

实例2:查找更改时间在比log2012.log文件新的文件  

命令:

find . -newer log2012.log -print

输出:

[root@localhost test]# find -newer log2012.log

.

./log2015.log

./log2017.log

./log2016.log

./test3

[root@localhost test]#

9.使用type选项:

实例1:在/etc目录下查找所有的目录  

命令:

find /etc -type d -print

实例2:在当前目录下查找除目录以外的所有类型的文件 

命令:

find . ! -type d -print

实例3:在/etc目录下查找所有的符号链接文件

命令:

find /etc -type l -print

10.使用size选项:

  可以按照文件长度来查找文件,这里所指的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。

  在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。

实例1:在当前目录下查找文件长度大于1 M字节的文件  

命令:

find . -size +1000000c -print

实例2:在/home/apache目录下查找文件长度恰好为100字节的文件:

命令:

find /home/apache -size 100c -print

实例3:在当前目录下查找长度超过10块的文件(一块等于512字节)

命令:

find . -size +10 -print

11.使用depth选项:

  在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。

实例1:find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。

命令:

find / -name "CON.FILE" -depth -print

说明:

  它将首先匹配所有的文件然后再进入子目录中查找

12.使用mount选项: 

  在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的mount选项。

实例1:从当前目录开始查找位于本文件系统中文件名以XC结尾的文件

命令:

find . -name "*.XC" -mount -print

linux常用命令:find 命令参数详解的更多相关文章

  1. [转帖]持久化journalctl日志清空命令查看配置参数详解

    持久化journalctl日志清空命令查看配置参数详解 最近 linux上面部署服务 习惯使用systemd 进行处理 这样最大的好处能够 使用journalctl 进行查看日志信息. 今天清理了下 ...

  2. mysqldump的常用语句及各参数详解

    mysqldump的常用语句及各参数详解 分类: MySQL 2011-01-11 17:55 1368人阅读 评论(0) 收藏 举报 数据库mysql服务器tableinsertdatabase m ...

  3. Linux 之 编译器 gcc/g++参数详解

    2016年12月9日16:48:53 ----------------------------- 内容目录: [介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++ ...

  4. docker run命令运行以及参数详解

    命令格式: -a, --attach=[] 登录容器(必须是以docker run -d启动的容器) -w, --workdir="" 指定容器的工作目录 -c, --cpu-sh ...

  5. wget命令企业级应用参数详解

    wget -O /etc/yum.repos.d/CentOS-Base.repo --spider: 爬虫,检查网站是不是好的 -T: 指定超时时间 --tries=2  指定重试的次数 -q   ...

  6. Linux OOM killer 与相关参数详解

    一.前言 本文是描述Linux virtual memory运行参数的第二篇,主要是讲OOM相关的参数的.为了理解OOM参数,第二章简单的描述什么是OOM.如果这个名词对你毫无压力,你可以直接进入第三 ...

  7. [转]odoo常用openerp-server.conf配置参数详解

    参数 说明 用法 addons_path addons模块的查找路径,多个路径用逗号分隔 addons_path = E:\GreenOdoo8.0\source\openerp\addons csv ...

  8. free命令常用参数详解

    free命令常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在运维期间我们会经常去查看服务器硬件信息,比如说内存,大家可能知道看内存用“[root@yinzhengji ...

  9. 【转载】Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解

    Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解 1清风揽月10人评论5006人阅读2017-06-21 15:48:43   博文说明[前言]: 本文 ...

  10. [转帖]Ipvsadm参数详解(常用命令)

    Ipvsadm参数详解(常用命令) 2013年11月29日 12:41:40 怀素1980 阅读数:15901   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

随机推荐

  1. 【CF873F】Forbidden Indices 后缀自动机

    [CF873F]Forbidden Indices 题意:给你一个串s,其中一些位置是危险的.定义一个子串的出现次数为:它的所有出现位置中,不是危险位置的个数.求s的所有子串中,长度*出现次数的最大值 ...

  2. html css的内联样式 内部样式表 外部样式表的优先级

    http://www.w3school.com.cn/html/html_css.asp 这三种样式是有优先级的,记住他们的优先级:内联式 > 嵌入式 > 外部式,但是嵌入式>外部式 ...

  3. 通过JS模拟select表单,达到美化效果[demo][转]

    转自: http://www.cnblogs.com/dreamback/p/SelectorJS.html 通过JS模拟select表单,达到美化效果 Demo ------------------ ...

  4. pandas常用

    #python中的pandas库主要有DataFrame和Series类(面向对象的的语言更愿意叫类) DataFrame也就是#数据框(主要是借鉴R里面的data.frame),Series也就是序 ...

  5. POJ 2912 - Rochambeau - [暴力枚举+带权并查集]

    题目链接:http://poj.org/problem?id=2912 Time Limit: 5000MS Memory Limit: 65536K Description N children a ...

  6. router-link params传参

    1.router.js配置 需要在路径后定义上要传的属性名 -->       /:属性名(query方式不需要) { path: '/CreateProgress/:name1', name: ...

  7. 【pyqt5】QdateTimeEdit(日期时间)

    返回当前日期和时间设置 from PyQt5 import QtCore, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): ...

  8. 深入浅出 TCP/IP 协议栈

    写的不错:http://www.cnblogs.com/onepixel/p/7092302.html#3899256

  9. 01_Python 基础课程安排

    Python 基础课程安排 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Py ...

  10. mysql 权限管理 针对库 授权 db.*

    需求 只放行user表 db1库的select权限 mysql> grant select on db1.* to 'mike'@'localhost'; Query OK, rows affe ...