Linux中find 命令

本文详细介绍Linux下find命令的使用方法,包括如何根据文件名、类型、时间、大小等条件进行搜索,以及如何结合-exec参数执行命令。此外还介绍了find命令在实际场景中的应用示例。

    find 是linux命令行工具箱中很棒的命令,之前总结了grep命令一些常见的用法,find 与grep的区别在于find用于查找文件或目录,grep用于在文件中查找匹配的文本(字符串)。此命令提供了相当多的查找条件,功能很强大。

    find常见用法:

    find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

     find 常用的命令参数:

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

   -print: find命令将匹配的文件输出到标准输出

    -name   filename             #查找名为filename的文件  -iname忽略大小写

     -path   使用通配符来匹配文件路径

     -regex  使用正则表达式来匹配文件路径

     -type   根据文件类型进行搜索

     -size    根据文件大小来搜索

       !          否定参数的含义

     -newer 找出比参考文件更新的所有文件

   

1.根据文件名或正则表达式进行搜索

 #find /home/seven -name "*.txt" -print

 #find . \( -name "*.txt" -o -name "*.pdf" \) -print

#find /  -path "*/python/*"  -print

 #find  /  -regex ".*\(\.py\|\.sh\)$"

 #find /home/seven -name "*.txt" -print   匹配所有不以.txt结尾的文件


2.根据文件类型的搜索

普通文件 f

符号链接 l

目录        d

字符设备 c

块设备 b

套接字 s

FIFO  p

#find . -type d -print

#find   /tmp   -name py* -type l 

3.根据文件时间进行搜索

Linux 文件系统中的每一个文件都有三个时间戳

访问时间(-atime)

修改时间(-mtime)

变化时间(-ctime):文件元数据(例如权限或所有权)最后一次改变的时间

基于分钟的:-amin -mmin -cmin

例:(1)找出最近三天改过的所有文件

#find . -type f -atime -3 -print

(2)找出三天前改过的文件

#find . -type f -atime 3 -print

(3)找出修改时间超过3天的文件

#find . -type f -atime 3 -print

(4)  找出比file.txt更新时间更近的文件或目录

#find . -newer file.txt


4.根据文件大小进行搜索

b 块(512字节) c 字节  w字 (2字节)K ,M,G

#find . -type f -size +2M


5.删除匹配的文件

例:删除当前目录下所有.txt文件

 #find . -type f "*.txt" -delete


6.根据文件权限和所有权来进行搜索

1)列出/root 目录内属于用户seven 的文件或目录

#find /root -user seven

(2)列出/home内不属于本地用户的文件或目录

#find /root -nouser seven

同样还有参数 group nogroup

(3) 列出web服务器没有设置好执行权限的php文件

#find . -type f -name "*.php" ! -perm 644 print


7根据目录深度进行搜索

find 命令在搜索时会遍历所有的子目录

使用-maxdepth -mindepth参数可以限制find 命令遍历的目录深度

只允许find 在当前目录中查找的话把 -maxdepth 设置为1

查找深度距离当前目录至少两个子目录的所有文件-mindepth 设置2

注:为了提高搜索效率 -maxdepth应该作为第三个参数在 -type之前出现。


8.find 通过-exec 执行命令

 -exec   command   {} \;      —–将查到的文件执行command操作,{} 和 \;之间有空格   

-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,

在执行每一个命令之前,都会给出提示,让用户来确定是否执行

{}是一个与-exec参数搭配使用的特殊字符串,对于每一个匹配的文件 {}都会被替换成相应的文件名


例: (1)找到所有的.txt文件拼接起来,并输入到README.txt文件中

#find . -type f -name "*.txt"-exec cat {} \;>README.txt

    (2)将这一个星期改过的文件复制到 /old目录下

#find . -type f -mtime -7 -exec cp {} old  \;

     ( 3) -exec 只能接受一个命令,无法直接使用多个命令,但可以把多个命令写在一个shell脚本中,

然后在-exec中使用这个脚本

  -exec ./commands.sh {} \;

     (4) -exec 与printf 结合起来可以生成有用的输出信息。



















划闪

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命令的一些常用选项和表达式,实际使用中还可以根据具体需求进行更多的定制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值