Linux中find命令的用法入门

前言

Linux系统下的Find 命令具有很强大的搜索功能,可以遍历整个文件系统。所以 find 命令很耗资源,有时候甚至会耗费很长时间,因此建议把它放在后台执行。

Find 命令格式如下所示:

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

介绍一种简单易记的格式:

find <指定目录> <指定条件> <指定动作>

动作参数

1、-exec 命令名称 {} \;

对符合条件的文件执行所给的 unix 命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件,命令的末尾必须以“ \;”结束,”{}”和”\;”之间必须有一个空格。

2、-ok 命令名称 {} \;

对符合条件的文件执行所给的 Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。

3、-ls

详细列出所找到的所有文件。

4、-fprintf 文件名

将找到的文件名写入指定文件。

5、-print

在标准输出设备上显示查找出的文件名。

6、-printf

格式的写法可考有关C语言的书。

命令选项

1、-name

按照文件名查找文件。

2、-perm

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

3、-prune

使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

4、-user

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

5、-group

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

6、-nogroup

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

7、-nouser

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

8、-newer file1 ! file2

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

9、-regex pattern

文件名与正则表达式 pattern 匹配。这是对整个路径的匹配,不是搜索文件。例如,要匹配名为 ‘./fubar3' 的文件,可以使用正则表达式 ‘.bar.' 或者 ‘.*b.3',但是不能用`b.*r3'。

10、-type

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

  1. b - 块设备文件。
  2. d - 目录。
  3. c - 字符设备文件。
  4. p - 管道文件。
  5. l - 符号链接文件。
  6. f - 普通文件

10、-size n:[c]

查找文件长度为n块的文件,带有c时表示文件长度以字节计。

11、-depth

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

12、-fstype

查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

13、-mount

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

14、-follow

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

15、-cpio

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

16、时间控制

-mtime -n +n

按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-mtime选项一样,按照时间节点来查找文件,但也有一些区别:

  1. -amin n   查找系统中最后N分钟访问的文件
  2. -atime n  查找系统中最后n*24小时访问的文件
  3. -cmin n   查找系统中最后N分钟被改变文件状态的文件
  4. -ctime n  查找系统中最后n*24小时被改变文件状态的文件
  5. -mmin n   查找系统中最后N分钟被改变文件数据的文件
  6. -mtime n  查找系统中最后n*24小时被改变文件数据的文件

罗辑控制

罗辑与

expr1 -a expr2
expr1 -and expr2

查找同时满足条件 expr1 和 expr2 的文件,例如在整个系统中查找既没有属主又没有属组的文件:

find / -nogroup –a –nouser

罗辑或

expr1 -o expr2
expr1 -or expr2

查找满足条件 expr1 或者 expr2 的文件, 例如查找 tmp 目录下以 “.sh” 结尾或者以 “.log” 结尾的文件:

find /tmp -name “.sh” -o -name “.log”

罗辑非

-not expr

查找不满足条件 expr 的文件,例如查找 /tmp 目录下所属用户不是 root 的文件:

find /tmp -not -user root -exec ls -l {} \;

一些典型的应用

递归修改目录下的所有目录权限(只修改目录,不修改文件)

三种方式:

1、 find path -type d -exec chmod 744{} \; (这句的句末有分号)

2、 find path -type d | xargs chmod 744

3、 chmod 755 `find -type d`

递归修改目录下的所有普通文件的权限(只修改文件,不修改目录)

三种方式:

1、 find path -type f -exec chmod 644 {} \;
2、 find path -type f | xargs chmod 644
3、 chmod 755 `find -type f` 

递归删除所有执行类型的文件

例如,递归删除当前目录下的 .exe 普通文件:

find . -name '*.exe' -type f -print -exec rm -rf {} \;

除了用 -exec 外,还可以利用管道来实现,例如递归删除当前目录下的 .deb 文件:

find . -name *.deb |xargs rm -rf

统计代码行数

find . -regex ".*\.\(py\|html\|js\|css\)$" | xargs wc -l

该命令可能在其他平台会失败,那么可以用 grep 来过滤文件:

wc -l `find $path | grep ".*\.\(py\|html\|js\|css\)$"`

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • Linux中find命令的用法汇总

    Linux系统中的 find 命令在查找文件时非常有用而且方便.它可以根据不同的条件来查找文件,例如权限.拥有者.修改日期/时间.文件大小等等.在这篇文章中,我们将学习如何使用 find 命令以及它所提供的选项来查找文件. 在绝大多数Linux发行版中,你都可以直接使用 find 命令而无需进行任何安装操作.如果你想在linux系统的命令行中变得特别高效,那么 find 是你必须掌握的命令之一. find 命令的基本语法如下: $ find [path] [option] [expression

  • linux find命令之xargs简单概述

    在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误.错误信息通常是"参数列太长"或"参数列溢出".这就是xargs命令的用处所在,特别是与find命令一起使用. find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样.这样它可以先处理最先获取的一

  • linux find命令之exec简单概述

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠. {} 花括号代表前面find查找出来的文件名. 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的.在有些操作系统中只允许-exec选

  • linux命令之find命令简单概述

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 1.命令格式: find pat

  • linux find下如何统计一个目录下的文件个数以及代码总行数的命令

    今天遇到如题所示问题,网上捣鼓半天,有收获 知道指定后缀名的文件总个数命令:        find . -name "*.html" | wc -l 知道一个目录下代码总行数以及单个文件行数:        find . -name "*.html" | xargs wc -l

  • 浅谈Linux下通过find命令进行rm文件删除的小技巧

    我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作写成脚本,就会遇到一些麻烦,本文通过一个例子为大家进行介绍. 系统环境: SUSE Linux Enterprise Server 11 或 Red Hat Enterprise Linux 问题症状: 客户现场有一个自动化的脚本,有以下的find语句,每天运行以删除某个目录下7天以前的文件或目录,

  • linux使用find和crontab命令定期清理过期文件

    crontab 命令 crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具.它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本. crontab 的基本用法 crontab [-u <user>] [-e|-l|-r] crontab <filename> crontab <filename> 可以读入一个以 crontab 语法书写的文件,并依照文件内的指示执行定时任务.与此同时,crontab -l 能够在标准输出上列出当前用户所有的定时

  • linux的一个find命令配合rm删除某天前的文件方法

    语句写法:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前带"."的文件删除 find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \; find:linux的查找命令,用户查找指定条件的文件 /usr/local/backups:想要进行清理的任意目录 -

  • Linux中 find查找命令用法详解

    Linux下查找文件的命令有两个,分别是locate 和 find. locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库.简单介绍下它的两个选项. #locate -i        //查找文件的时候不区分大小写 比如:locate  –i   passwd -n      

  • Linux中find命令的用法入门

    前言 Linux系统下的Find 命令具有很强大的搜索功能,可以遍历整个文件系统.所以 find 命令很耗资源,有时候甚至会耗费很长时间,因此建议把它放在后台执行. Find 命令格式如下所示: find pathname -options [-print -exec -ok -] 介绍一种简单易记的格式: find <指定目录> <指定条件> <指定动作> 动作参数 1.-exec 命令名称 {} \; 对符合条件的文件执行所给的 unix 命令,而不询问用户是否需要

  • linux中uptime命令的用法详细解析

    系统中的uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系统在过去的1分钟.5分钟和15分钟内的平均负载. uptime命令用法十分简单:直接输入uptime即可.另外还有一个参数  -V ,是用来查询版本的. (注意是大写的字母v)[linux @ localhost]$ uptime –Vprocps version 3.2.7[linux @ loc

  • linux中echo命令的用法实例教程

    前言 对于初学者来说,掌握一些基本命令的常用用法是必须的.本文列举了echo命令的几个常用用法并加以实例说明,以作回顾.参考. 基础 echo命令常用作打印输出字符串,根据echo帮助文件可以获得以下信息: 语法 echo [-neE][arg-] 三个参数: -n : 关闭输出文字时的自动换行 -e : 开启转义字符功能( \ ) -E : (默认)关闭转义字符功能( \ ) 使用-e选项时,如果在字符串中键入以下字符,程序不会将之当成一般字符串输出,而是会使用其转义功能: • \a 发出警告

  • Linux中tail命令用法详解

    tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文件写到标准输出.很多人喜欢使用tail –f 来监控日志文件. 一.Linux tail命令格式 Linux tail命令 格式如下所示 tail [OPTION]... [FILE]... Linux tail命令 参数如下所示 -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c

  • Linux中fuser命令用法详解

    描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母表示访问类型. 在zkfc的日志里面,有一个warn:PATH=$PATH:/sbin:/usr/sbin fuser -v -k -n tcp 8090 via ssh: bash: fuser: 未找到命令 原因是最小化安装centos的时候,没有fuser这个命令 yum install -y

  • 详解linux下tree命令的用法

    tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来 linux下的tree就比较强大了,但一般系统并不自带这个命令,需要手动下载安装, 安装 : yum -y install tree -a 显示所有文件和目录. -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合. -C 在文件和目录清单加上色彩,便于区分各种类型. -d 显示目录名称而非内容. -D 列出文件或目录的更改时间. -f 在每个文件或目录之前,显示完整的相对路径名称. -F 在执行文件,目录,Socket,

  • 浅谈linux中sed命令和awk命令的使用

    本文主要研究的是linux中sed命令和awk命令的使用的相关内容,具体如下. 1.sed命令:没有重定向不会真正修改源文件中的内容 查询语句 ①sed -n '/sbin/p' passwd 表示查询出passwd文件中存在sbin字符的所有行并打印出来,其中两个/表示的是其中的是正则表达式,-n和/p是该命令的参数,需要联合使用 ②sed -n 'xp' passwd x是数字,表示打印出passwd文件中第x行的数据 新增语句 ①sed '1a 这是第一行后面添加的内容' passwd 其

  • linux中 pmap 命令详解

    通过查看帮助,返回了如下信息: Usage: pmap [options] pid [pid ...] Options: -x, --extended show details -X show even more details WARNING: format changes according to /proc/PID/smaps -XX show everything the kernel provides -c, --read-rc read the default rc -C, --re

  • linux 中ls命令详解

    ls命令用来显示目标列表,在Linux中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件. 语法 ls(选项)(参数) 选项 -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出): -A:显示除影藏文件“.”和“..”以外的所有文件列表: -C:多列显示输出结果.这是默认选项: -l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列: -F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文

随机推荐