Linux查找文件 find

Linux查找文件 find

find命令可以在文件系统中查找文件,它的一般语法为:

find 路径... 测试... 动作...
  • 路径:find开始执行后,会查看每个路径及其整个目录树。
  • 测试:对于遇到的每个文件,都会进行测试。测试结果为真的文件会被做成一个列表。
  • 动作:测试完成后,对列表中的每个文件执行指定的动作。

下面是一个例子:

$ find ./ -name now.txt -print

其中:

  • ./:路径,find会在此目录下进行搜索。路径默认为当前工作目录。
  • -name now.txt:测试,对于每个文件,测试其名字是否为now.txt,将测试为真的文件做成一个列表。
  • -print:动作,对于列表中的每个文件,执行print(显示)操作。

本文目录

  • 1 路径
  • 2 测试
  • 3 动作

路径

find的搜索路径默认是当前工作目录,当然也可以自己指定搜索目录:

$ find ~

或者指定多个搜索目录:

$ find /etc /opt

测试

find的常用测试如下:

测试

含义

-name pattern

按文件名pattern搜索文件

-iname pattern

按文件名pattern搜索文件(不区区分大小写)

-type [df]

文件类型测试:d代表目录,f代表普通文件

-perm mode

文件权限测试:文件权限为mode

-perm -mode

文件权限包含mode的文件

-user name

拥有者为name

-group name

所属组为name

-uid n

拥有着id为n

-gid n

所属组id为n

-nonuser

搜索文件的拥有者不在 /etc/passwd 的文件

-nongroup

搜索文件的所属组不在 /etc/group 的文件

-size [-+]n[cbkMG]

比n字节(c)、块(b)、千字节(k)、兆字节(M)、吉字节(G)大(+)或小(-)的文件

-empty

空文件

-[amc]time n

[amc]time在之前第n天的文件

-[amc]time [+-] n

[amc]time在n天之前(+)或之内(-)(不含第n天)的文件

-newer file

比file还要新的文件

-[amc]min n

[amc]time在之前第n分钟的文件

-[amc]min [+-] n

[amc]time在n天之前(+)或之内(-)(不含第n天)的文件

-type确定文件的类型,下面是三个例子:

$ find /etc -type f -print  # 搜索/etc目录下的普通文件并显示
$ find /etc -type d -print  # 搜索/etc目录下的目录并显示
$ find /etc -print          # 搜索/etc目录下的任何类型的文件并显示

事实上,可以多个测试组合使用:

$ find /etc/ -type f -name group -print # 搜索/etc目录下的普通文件且文件名为group的文件并显示

-perm按特定权限搜索文件:

$ find -perm 775 -print     # 搜索工作目录中权限为775的文件并显示
$ find -perm -111 -print    # 搜索工作目录中权限包含111的文件并显示

-size按指定大小搜索文件:

$ find -type f -size +1M -size -3M -print # 搜索工作目录中文件大小在1-3M的普通文件并显示

下面的命令按时间搜索文件:

$ find -mmin -30 -print     # 搜索30分钟内被修改的文件并显示
$ find -mtime 0 -print      # 搜索24小时内被修改的文件并显示

此外,还可以在测试条件之前使用取反,但是需要引用它:

$ find -type f '!' -name '*.txt' -print # 搜索工作目录中文件名不以.txt结尾的普通文件并显示

动作

例子

$ find ./ -name now.txt -print

中的-print就是一个动作,它是默认的动作,因此这个例子与下面的命令是一样的:

$ find ./ -name now.txt

-fprint将结果输出到文件:

$ find ./ -name now.txt -fprint a.txt # 将搜索结果保存到a.txt文件中

-exec之后可以键入一条命令,使用{}代表find搜索到的文件:

$ find ./ -name now.txt -exec ls -l {} ';'  # 使用ls -l处理find搜索到的每个文件

这个例子中的';'代表着每个文件处理语句的结束,下面是另一个例子:

$ find ./ -type d -exec chmod 777 {} ';' # 将工作目录下的目录文件修改为777权限

原文发布于微信公众号 - mwangblog(mwangblog)

原文发表时间:2018-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python安装扩展库与打包成exe可执行文件的方法

1、安装扩展库的几种方法。 首先可能需要使用 pip install --upgrade pip 来升级本机的pip程序。然后在命令提示符环境(即cmd方式)执...

3596
来自专栏加米谷大数据

加米谷:Kafka Connect如何运行管理

上节讲述了Kafka OffsetMonitor:监控消费者和延迟的队列,本节更详细的介绍如何配置,运行和管理Kafka Connect,有兴趣的请关注我们的公...

4247
来自专栏张善友的专栏

CentOS 7 安装Maven

3215
来自专栏黑白安全

浅析php.ini设置与Web安全

php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如 system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的...

1292
来自专栏Ken的杂谈

Java快速入门教程 2、Windows下Java开发环境配置(IDEA+Maven+Tomcat)

1、Java SDK:JDK 百科:JDK是整个Java开发的核心,它包含了JAVA的运行环境JRE(JVM+Java系统类库)和JAVA工具(编译&调试等等)...

2125
来自专栏CaiRui

linux NFS网络文件系统

一、NFS服务简介   NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由sun公司开发,于1984年向外...

3089
来自专栏张善友的专栏

CentOS 7 安装Maven

Maven的下载地址是:http://maven.apache.org/download.cgi 安装Maven非常简单,只需要将下载的压缩文件解压就可以了。 ...

4065
来自专栏Java后端生活

Linux(七)开机,重启和用户登录注销

3846
来自专栏How things work?

30分钟了解同步,异步,阻塞,非阻塞

同步,异步,阻塞,非阻塞,在一些场景下,它们是同一个概念的不同名字;在另一些场景下,它们是不同的概念。

1.2K15
来自专栏Albert陈凯

Linux配置网卡

最简单的vi命令 vi 一个文件名以后 输入i才可以编辑 i 插入 键盘左上角的esc键可以退出 :wq 保存退出 :q! 不保存退出 上下左右可以调整光标 手...

4667

扫码关注云+社区

领取腾讯云代金券