Linux Find命令

  1. 是什么:Find命令是在目录中查找文件

1.find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

  1. find 命令的基本信息如下:

  2. 命令名称:find。
  3. 英文原意:search for files in a directory hierarchy.
  4. 所在路径:/bin/find。
  5. 执行权限:所有用户。
  • 功能描述:在目录中查找文件。

  • 语法:Find[path][expression]

path 是要查找的目录路径,expression 是用于过滤和限制查找结果的选项和参数。。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

1.-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

2.-amin n : 在过去 n 分钟内被读取过

3.-anewer file : 比文件 file 更晚被读取过的文件

4.-atime n : 在过去 n 天内被读取过的文件

5.-cmin n : 在过去 n 分钟内被修改过

6.-cnewer file :比文件 file 更新的文件

7.-ctime n : 在过去 n 天内修改的文件

8.-mtime n : 在过去 n 天内修改过的文件

10.-empty : 空的文件-gid n or -group name : gid n 或是 group 名称是 name

11.-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

12-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

13.-size n : 文件大小 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytesw 是二个位元组。

-type c : 文件类型是 c 的文件。

d: 目录

c: 字型装置文件

b: 区块装置文件

p: 具名贮列

f: 一般文件

l: 符号连结

s: socket

-pid n : process id n 的文件

你可以使用 ( ) 将运算式分隔,并使用下列运算。

exp1 -and exp2

! expr

-not expr

exp1 -or exp2

exp1, exp2

  • 实例

    上下文环境搭建。

    例如:将/etc目录复制到/tmp目下之下:

    #cp  -a  /etc   /tmp/

    #cd  /tmp

  • 将当前目录及其子目录下所有文件后缀为 .conf 的文件列出来:

    # find . -name "*.conf"

    将当前目录及其子目录中的所有文件列出:

    # find . -type f

    将当前目录及其子目录下所有最近 20 天内更新过的文件列出:

    # find . -ctime  20

    查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:

    # find /var/log -type f -mtime +7 -ok rm {} \;

    查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

    # find . -type f -perm 644 -exec ls -l {} \;

    查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:

    # find / -type f -size 0 -exec ls -l {} \;

    但是 find 命令有一个小特性,就是搜索的文件名必须和你的搜索内容一致才能找到。如果只包含搜索内容,则不会找到。我们做一个实验:
     

    [root@localhost ~]# touch  yum.conf.bak
    #
    在/root/目录下建立一个文件yum.conf.bak
    [root@localhost ~]# find  /  -name yum.conf
    /etc/yum.conf
    #搜索只能找到yum.conf文件,而不能找到 yum.conf.bak 文件

    find 能够找到的是只有和搜索内容 yum.conf 一致的 /etc/yum.conf 文件,而 /root/yum.conf.bak 文件虽然含有搜索关键字,但是不会被找到。

    这种特性我们总结为:find 命令是完全匹配的,必须和搜索关键字一模一样才会列出。
    Linux 中的文件名是区分大小写的,也就是说,搜索小写文件,是找不到大写文件的。如果想要大小通吃,就要使用 -iname 来搜索文件。

    [root@localhost ~]# touch CANGLS
    [root@localhost ~]# touch cangls
    #建立大写和小写文件
    [root@localhost ~]#
    find  .  –iname  cangls
    ./CANGLS
    ./cangls
    #
    使用-iname,大小写文件通吃

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值