find常用

先看目录结构:

allen@lenovo:Demo$ tree $(pwd)
/home/allen/Downloads/Demo
├── dir
│   └── infile
├── file1
├── file2
└── file3

1 directory, 4 files

先看最简单的,按名称搜索:

allen@lenovo:Demo$ find . -name "file1"
./file1

支持通配符:

allen@lenovo:Demo$ find . -name "file*"
./file1
./file2
./file3

搜索出来的都是相对路径,那是因为搜索目录指定了当前目录,如果改成绝对路径:

allen@lenovo:Demo$ find $(pwd) -name "file*"
/home/allen/Downloads/Demo/file1
/home/allen/Downloads/Demo/file2
/home/allen/Downloads/Demo/file3

按类型搜索:

# 文件类型 f
allen@lenovo:Demo$ find . -type f
./dir/infile
./file1
./file2
./file3
# 目录类型 d
allen@lenovo:Demo$ find . -type d -name dir
./dir

匹配条件默认都是AND,如果是OR:

# 名称是dir且类型是文本的
allen@lenovo:Demo$ find . -name dir -type f
# 和上面一样的效果
allen@lenovo:Demo$ find . -name dir -a -type f
# 名称是dir或类型是文本的
allen@lenovo:Demo$ find . -name dir -o -type f
./dir
./dir/infile
./file1
./file2
./file3

按大小检索:

# 大于10k,且小于10M,且小于10G
allen@lenovo:Demo$ find . -size +10k -size -10M -size -10G

按修改时间,精确到天:

# 24小时内修改的
allen@lenovo:Demo$ find . -mtime 0
.
./dir
./dir/infile
./file1
./file2
./file3
# 昨天修改的
allen@lenovo:Demo$ find . -mtime 1
# 2天内修改的,小于2天
allen@lenovo:Demo$ find . -mtime -2
# 2天前修改的,大于2天
allen@lenovo:Demo$ find . -mtime +2

按修改时间,精确到分钟:

# 和上面一样的,只是换了个参数
# 30分钟内修改的,小于30分钟
allen@lenovo:Demo$ find . -mmin -30

按修改时间,指定一个时间:

# 先看修改时间
allen@lenovo:Demo$ ll
总用量 0
drwxrwxr-x 2 allen allen 20 12月 20 09:35 dir
-rw-rw-r-- 1 allen allen  0 12月 20 09:34 file1
-rw-rw-r-- 1 allen allen  0 12月 20 09:43 file2
-rw-rw-r-- 1 allen allen  0 12月 20 09:43 file3
# 比指定时间新的
allen@lenovo:Demo$ find . -newermt "2020-12-20 09:40"
.
./file2
./file3
# 反向
allen@lenovo:Demo$ find . ! -newermt "2020-12-20 09:40"
./dir
./dir/infile
./file1

按权限检索:

# 权限需要正好是664的
allen@lenovo:Demo$ find . -perm 664
./dir/infile
./file1
./file2
./file3
# 所属人,组,其他人,至少都要有r权限
allen@lenovo:Demo$ find . -perm -444
.
./dir
./dir/infile
./file1
./file2
./file3
# 所属人,组,其他人,只要有一个拥有x权限
allen@lenovo:Demo$ find . -perm /111
.
./dir

 

上一篇:比diff更好的对比工具vim(它会用颜色标注出不同之处)某些时候


下一篇:linux命令大全