Linux中find指令

本文详细介绍了Linux下的find命令的使用方法,包括按文件名、权限、修改时间、属组及类型等查找方式。并通过实例展示了如何结合-exec选项执行命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 .功能

find命令在目录结构中搜索文件,并执行指定的操作

二.格式

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

pathname: find命令所查找的目录路径。例如用.来表示当前目

录,用/来表示系统根目录。

-exec: find命令对匹配的文件执⾏行该参数所给出的shell命

令。相应命令的形式为’command’ { } \;注意{ }和\;

之间的空格。

-ok: 和-exec的作⽤用相同,只不过以一种更为安全的模式来执⾏行

该参数所给出的shell命令,在执行每一个命令之前,都会给出提

示,让用户来确定是否执行。

三.使用

1.按照文件名查找文件

find -name april* 在当前目录下查找以april开始的文件

例如:我们要在wrngt目录下查找study此文件

这里写图片描述

即使用命令 find -name study 就可找到image这里写图片描述

在用户主目录下查找并列举出来:

find study -name test.c -exec ls -l {} \;

这里写图片描述

2.按照文件权限查找文件

使用命令:find -perm + 权限值

例如:

这里写图片描述

查找到并执行相应的操作:例如列举出来

find ~/study -perm 664 -exec ls -l {} \;

这里写图片描述

3.按照文件修改时间来查找文件

命令: find -mtime -n 或者 +n

按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前(天数为单位)

例如:find -mtime -3

这里写图片描述

find -mtime +3

这里写图片描述

类似的还有下面两个用法相同:

atime:访问时间(accesstime),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;

ctime:变更时间(changetime),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;

但是假如我们要找某个特定的时间段对文件进行的改变,该如何操作呢??

举个例子:现在是 2017年3月25日14点十分,我们要系统对2017年3月25日14点00分到14点05分之间对那些文件有修改查找出来,我们可以执行下列命令:

find / -mmin -10 -mmin +5

这里写图片描述

问题又来了,我们可以找到了在某一段时间所修改过的文件,那么如何删除它呢??

假设现在在/logs..目录中查找更改时间在5日以前的.文件并删除它们:$ find ~/study -type f -mtime -1 -exec rm -f {} \;

这里写图片描述

4.按照文件属组来查找

命令:find ~/ -user root -exec ls -ld {} \;

这里写图片描述

相类似的还有按照文件所属的组来查找文件(将user换为group即可)。

5.按照文件类型查找:

b - 块设备文件

这里写图片描述

d - 目录。

这里写图片描述

f - 普通文件。

这里写图片描述### 类似还有许多…

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

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

find -depth -name test.c

这里写图片描述

7.查找文件大小为XX的文件的办法

命令 find /root -size -5557c -size +5555c -exec ls -ld {} \;

这里写图片描述

要想熟练使用find命令,这些不够,还需要平时多多练习。。。查阅更多资料。。。

find命令是Linux系统中一个非常常用的命令,该命令可以查找文件和目录,并根据不同的条件进行过滤。其基本语法格式如下: ```shell find [path] [option] [expression] ``` 其中,path表示要查找的路径,可以是相对路径或绝对路径;option表示查找时的一些选项,可以用来指定查找深度、时间、权限等条件;expression表示要查找的条件,可以是文件名、文件类型、文件大小等。 下面介绍几个常用的find命令选项和表达式: 1. -name:根据文件名进行查找。 ```shell find /home -name "test.txt" # 在/home下查找文件名为test.txt的文件 ``` 2. -type:根据文件类型进行查找。 ```shell find /home -type f # 在/home下查找普通文件 find /home -type d # 在/home下查找目录 ``` 3. -mtime:根据文件修改时间进行查找。 ```shell find /home -mtime +7 # 查找/home目录下7天前修改的文件 find /home -mtime -7 # 查找/home目录下7天内修改的文件 ``` 4. -size:根据文件大小进行查找。 ```shell find /home -size +1M # 查找/home目录下大小大于1MB的文件 find /home -size -1M # 查找/home目录下大小小于1MB的文件 ``` 5. -user:根据文件所有者进行查找。 ```shell find /home -user alice # 查找/home目录下所有者为alice的文件 ``` 6. -perm:根据文件权限进行查找。 ```shell find /home -perm 644 # 查找/home目录下权限为644的文件 ``` 7. -exec:对查找到的文件进行操作。 ```shell find /home -name "test.txt" -exec rm {} \; # 查找/home目录下名为test.txt的文件并删除 ``` 以上仅是find命令的一些常用选项和表达式,实际使用中还可以根据具体需求进行更多的定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值