Linux基础教程 - find命令

 

兄弟连Linux培训:linux命令之find命令的12个常用参数详解(含具体用法和注意事项www.lampbrother.net

 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

  输出:

  复制代码代码如下:[[email protected] 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

  [[email protected] test]# find . -name "[a-z]*[4-9].log" -print

  ./log2014.log

  ./log2015.log

  ./test4/log2014.log

  [[email protected] test]#

  2.用perm选项:

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

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

  复制代码代码如下:[[email protected] 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

  [[email protected] test]#

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

  命令:

  复制代码代码如下:find . -perm -005

  输出:

  复制代码代码如下:[[email protected] 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

  [[email protected] 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

  [[email protected] test]#

3.忽略某个目录:

兄弟连Linux培训www.lampbrother.net

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

  命令:

  复制代码代码如下:find test -path "test/test3" -prune -o -print

  输出:

  复制代码代码如下:[[email protected] 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

  [[email protected] soft]#

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

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

  命令:

  复制代码代码如下:find test -path "test/test4" -prune -o -print

  输出:

  复制代码代码如下:[[email protected] 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

  [[email protected] 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

  [[email protected] 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

  输出:

  复制代码代码如下:[[email protected] 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

  [[email protected] soft]#

  说明:

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

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

  命令:

  复制代码代码如下:find test \(-path test/test4 -o -path test/test3 \) -prune -o -name "*.log" -print

  输出:

  复制代码代码如下:[[email protected] 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

  [[email protected] 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.使用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

时间: 2024-11-05 16:24:10

Linux基础教程 - find命令的相关文章

Linux 基础教程 42-xargs命令

? ? xargs是execute arguments的缩写,主要作用是从标准输入中读取内容,并将此内容传递给它要协助的命令,并作为要协助命令的参数来执行. 基本语法 xargs [选项] [命令] 其常用选项如下: 选项 说明 --null ,-0 允许将NULL作为分隔符 -a file 从文件读取项而非标准输入 -d delim 指定分隔符 -p ,--interactive 交换模式,在执行命令,需要用户确认是否执行 -n max-args 用于指定每次传递多少个参数给其后面的命令 -E

Linux 基础教程 29-tcpdump命令-1

什么是tcpdump ? ? 在Linux中输入命令man tcpdump给出的定义如下所示: tcpdump - 转储网络上的数据流 是不是感觉很懵?我们用通俗.形象.学术的表达方式来全方位描述tcpdump: 通俗的来说,tcpdump是一个抓包工具,用于抓取网络中传输的数据包 形象的来说,tcpdump如同国家海关,凡是入境和出境的货物,海关都要抽样检查,看看里面具体是什么货物 学术的来说,tcpdump是一种Sniffer(嗅探器),利用以太网的特性,通过将网络设备置于混杂模式来获取传输

Linux 基础教程 44-history命令

什么是history ? ? 在Linux系统日积月累的使用中,我们会输入很多命令.而在我们想重复上一个命令时,通过使用方向键向上翻就可以查看我们已经输入和使用过的命令.那大家有没有想过这个命令保存在什么地方,最大又会保存多少条记录了?今天我们就来学习history命令. ? ? 从history字面意思就可以知道该命令主要用于查看用户曾经输入和使用过的命令.使用该命令可以减少我们日常重复输入命令的次数.其常用选项如下所示: 选项 说明 -c 清除历史命令 -d offset 删除指定位置的hi

初识 Linux 文件权限--Linux基础教程

初识 Linux 文件权限--Linux基础教程 在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,权限系统就直接取自于 UNIX 文件权限(甚至使用许多相同的工具). 但不要以为理解文件权限需要长时间的学习.事实上会很简单,让我们一起来看看你需要了解哪些内容以及如何使用它们. 基础概念 你要明白的第一件事是文件权限可以用来干什么.当你设置一个分组的权限时发生了什么?让我们

Linux基础文本查看命令之 cat,tac,more,less,head,tail

在使用linux的过程中多多少少都会涉及到文本的操作,因此掌握一些文本操作的工具命令能大大的提高我们的工作效率. cat命令 cat命令的用途是链接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者是从标准输入读取内容并显示,它常与重定向符号配合使用. 1)命令格式 cat    [选项]    [FILENAME] 2)命令功能 将文件或标准输入组合输出到标准输出. 3)命令参数 -E:在每行结束处显示 $ -n:对输出的所有行编号 -s:不输出多行空行 4)常

linux基础之grep命令

Linux基础之grep命令 grep命令是linux下的行过滤工具,参数繁多,功能比较强大,用起来比较方便,下面就将grep及其egrep分模块讲述其功能. 1.Grep:根据模式搜索文本,并将符合模式的文本行显示出来 2.Grep的语法:Grep  [option]   PATTERN  [file-] Pattern: 文本字符和正则表达是元字符组合而成匹配条件 3.grep的常用选项: -i: 不区分字符的大小写(只适用于单字符): -I:字符的大写: --color: 匹配的串用高亮颜

Linux基础知识——shell命令类型及命令使用帮助

加入马帮有一段时间了,看到群里面大总管要检查博客,才意识到,原来我还没有写过作业.俗话说的好,时间是把杀猪刀!!!咳咳,其实想说,马哥视频忒长,内容贼多,对于文笔不好我来说,写作业压力山大啊,有木有.嗯.嗯,长话短说,进入正题. 两个星期过去,课程进度有点掉队,这篇博文主要记录基础命令课程知识,用于梳理知识点并加深印象,为今后行走linux之路打下坚实基础的好开端,完成该博文并回顾相关知识点后,期望加快学习步伐,稳扎稳打,跟上进度,good good study,day day up! 1.  

【Linux基础】常用命令大全

Linux基础之常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /

Linux基础教程

前言 Tshare365团队决定写一些入门的基础知识,希望小白们更快的熟悉Linux,这里没有太多理论,有的只是干货!以下是学习路线,文章会持续更新,在学习的过程中遇到任何问题,也可以留言! 基础学习路线指南(文章持续更新中) 这里我们使用的都是Centos6的系统,如果你使用其他的系统,可能有些地方需要自行修改. 一.下载镜像 Centos6镜像下载 http://mirrors.163.com/centos/6/isos/x86_64/CentOS-6.6-x86_64-bin-DVD1.i