find path -name “通配符”
find path -iname file
忽略大小写搜索
find path ( -name “通配符1” -o “通配符2” )
-o
表示或者,匹配其中任意一个正则表达式
[edemon@CentOS tmpDir]$ ls
d1 d2 d3 f1 f2 f3
[edemon@CentOS tmpDir]$ find . \( -name "f[1-3]" -o -name "d[1-3]" \)
./f2
./d3
./d2
./f1
./f3
./d1
find path -path “通配符”
通配符匹配路径
find . -path "*/*1"
./f1
./d1
find . -regex “regex”
使用正则表达式进行路径的匹配。
find . -regex ".*1$"
./f1
./d1
find . ! -name “通配符”
[edemon@CentOS tmpDir]$ find . ! -name "*1"
.
./f2
./d3
./d2
./f3
匹配出所有不符合模式的文件。
find . -maxdepth 1 -name
设定最大的目录搜索深度。
find . -maxdepth 1 -name
设定最小的目录搜索深度。
find . -type option
参数 | 搜索对象 |
---|---|
d | 目录 |
f | 普通文件 |
l | 符号链接 |
c | 字符设备 |
b | 块设备 |
s | 套接字 |
p | FIFO |
将文件和目录分别列出可不是个容易事。不过有了find就好办了。
例如,只列出普通文件:$ find . -type f -print
只列出符号链接:$ find . -type l -print
-atime
Unix/Linux文件系统中的每一个文件都有三种时间戳,如下所示。 访问时间(-atime):用户最近一次访问文件的时间。 修改时间(-mtime):文件>内容最后一次被修改的时间。 变化时间(-ctime):文件元数据(例如权限或所有权)最后一次改变的时间。
-atime
、-mtime
、-ctime
可作为find的时间选项。它们可以用整数值指定,单位是天。这些整数值通常还带有-或+:-表示小于,+表示大于。
find . -type f -atime -7 -print
找出7天内的普通文件。
-amin
-atime
、-mtime
以及-ctime
都是基于时间的参数,其计量单位是“天”。还有其他一些基于时间的参数是以分钟作为计量单位的。这些参数包括:
-amin(访问时间)
-mmin(修改时间)
-cmin(变化时间)
-size
find . -type f -size 2k
大小等于2KB的文件 除了k之外,还可以用其他文件大小单元。
b —— 块(512字节)。 c —— 字节。 w —— 字(2字节)。 k —— 1024字节。 M —— 1024K字节。 G —— 1024M字节。
-newer
使用-newer,我们可以指定一个用于比较时间戳的参考文件,然后找出比参考文件更新的文件。
-perm
find . -perm 644
-perm指明find应该只匹配具有特定权限值的文件。
-delete
-delete
可以用来删除find查找到的匹配文件。 删除当前目录下所有的 .swp文件: $ find . -type f -name "*.swp" -delete
!
寻找不满足 … 的文件。
find . ! -perm 644
-user
找出user拥有的所有文件
例如; find . -user root
参数USER可以是用户名或UID。
-exec
$ find . -name "*.c" -exec printf "file: %s\n" {} \;
file: ./gra.c
file: ./bless1.c
file: ./.Metadata/.plugins/org.eclipse.cdt.make.core/specs.c
file: ./lucky.c
file: ./bucket/src/bucket.c
file: ./bucket_sort/src/bucket_sort.c
file: ./chello.c
{}是一个与-exec选项搭配使用的特殊字符串。对于每一个匹配的文件,{}会被替换成相应的文件名。
忽略搜索目录
-name bucket -prune
$ find . -name "*.c"
./lucky.c
./bucket/src/bucket.c
./bucket_sort/src/bucket_sort.c
./chello.c
# 忽略bucket目录
$ find . \( -name bucket -prune \) -o \( -name "*.c" \)
./lucky.c
./bucket
./bucket_sort/src/bucket_sort.c
./chello.c