Linux基础find命令

find命令简介

find命令主要用于在某个目录下面寻找某个文件。

find命令的标准命令格式:find [path…] -name [pattern]

find命令允许我们同时指定多个要搜索的文件夹。

find命令简单实例

# 当前目录下面我新建了三个文件夹 -1F表示没行展示一个
-> ls -1F
test1/
test2/
test3/
# test1文件夹下面有个first文件
-> cd test1
-> ls 
first
# test2文件夹下面有个first.txt文件
-> cd test2
-> ls 
test1.txt
# 开始搜索  Linux中“.”号表示当前目录,“..”表示父目录
-> find . -name first
./test1/first
-> find test  test1 test2 test3 -name first
find: ‘test’: No such file or directory
test1/first

总结:find会从左到右依次搜索每一个文件夹,如果该文件夹存在,则搜索;如果该文件夹不存在,则报错,并继续搜索下一个文件夹,直到所有的文件夹都搜索完成为止!

find指定搜索对象的类型

命令模版:find [path…] -type [param] -name [pattern]

选项 释义
d 文件夹
f 普通文件
l 符号链接文件
b 块设备
c 字符设备
p 管道文件
s socket套接字

find指定文件名后缀

# 使用*.txt这样的通配符表达法
-> find . -name "*.txt"
./test2/test1.txt

find按用户(属主)和群组(属组)来搜索

# 首先看一下我的group
—> ls -1F /home
admin/
git/
# 用户git,群组git
# -user选项指定用户  -group选项指定群组
-> find . -type f -user git -group git
./test1/first
./test2/test1.txt

find按时间来搜索文件

选项 释义
-mmin/-mtime +n 表示在n分钟/天以前文件被修改过
-mmin/-mtime -n 表示在n分钟/天以内文件被修改过
-cmin/-ctime +n 表示在n分钟/天以前文件状态有过改变
-cmin/-ctime -n 表示在n分钟/天以内文件状态有过改变
-amin/-atime +n 表示在n分钟/天以前文件被访问过
-amin/-atime -n 表示在n分钟/天以内文件被访问过
选项 释义
-newer file 搜索修改时间比file文件的修改时间近的
-anewer file 搜索访问时间比file文件的访问时间近的
-cnewer file 搜索状态变化时间比file文件的状态变化时间近的

find的newerXY选项

针对两个对象的不同类型的时间进行比较,比如要搜索“访问时间”比指定文件的“修改时间”更近的文件。
在使用-newerXY选项时,一定要指定一个参数作为比较的对象,这个参数可以是一个具体的文件,也可以是一个具体的时间值,例如2018-08-12.
这个选项里的X和Y,其实是两个占位符,用户可以跟据自己的需求将它们替换成如下字母:

选项 释义
a 访问时间
B 诞生时间
c 状态变化时间
m 修改时间
t 将所指定的参数理解为一个具体的时间值

find的找到大文件

find添加“-size”选项:

例子:-size +40M:表示搜索大于40M的文件;

-size -40M:表示搜索小于40M的文件;

-size 40M:表示搜索等于40M的文件;

选项 释义
b 512-byte数据块
c bytes
w 两字节的字(words)
k KB
M MB
G GB

find的递归搜索

find提供了-maxdepth选项来控制搜索的深度!

# -maxdepth [param] 表示递归的深度
-> find . -maxdepth 1 -name first

-> find . -maxdepth 2 -name first
./test1/first

find命令其他

-regex选项用来匹配正则表达式

-perm选项,用于设定权限

-> find . -perm 664 -exec ls -lh {} \;
-rw-rw-r-- 1 git git 14 Nov  3 09:53 ./test1/first
-rw-rw-r-- 1 git git 0 Nov  3 20:13 ./test1/second
-rw-rw-r-- 1 git git 14 Nov  3 09:12 ./test2/test1.txt
  • -exec:find针对搜索到的每一个对象执行特定的Shell命令;
  • ls -hl:指定的特定Shell命令;
  • {}:在-exec用法中,指代find搜索到的每一个对象;
  • \;:在-exec用法中,“;“表示特定Shell命令的结束,为了防止转义所以加上了“\”。

猜你喜欢

转载自blog.csdn.net/qq_33704186/article/details/83692172