作用:递归地处理指定目录中的文件。如,递归地查看(打印) dist 目录中的所有文件:
$ find dist/ -print
dist/
dist/datasets
dist/datasets/blocks.json
...
find 命令支持诸多的选项,以指定对哪些文件进行处理、以及如何处理。
1. 根据名称进行搜索
-name pattern
:匹配文件名(basename)部分(使用 shell 模式)。-iname pattern
:同 -name,但不区分大小写。-regex pattern
:匹配整个路径(使用正则表达式)。-iregex pattern
:同 -regex,但不区分大小写。-path pattern
:匹配整个路径(使用 shell 模式)。-ipath pattern
:同 -path,但不区分大小写。
$ find / -name 'ovs*' -print
/run/openvswitch/ovs-vswitchd.18732.ctl
/run/openvswitch/ovs-vswitchd.pid
/run/openvswitch/ovsdb-server.18660.ctl
...
$ find / -regex '.*ovs.*' -print | head -5
/run/openvswitch/ovs-vswitchd.18732.ctl
/run/openvswitch/ovs-vswitchd.pid
/run/openvswitch/ovsdb-server.18660.ctl
...
$ find / -path '*/src/*' -print
/root/simpler_glove-master/src/cooccur.c
/root/simpler_glove-master/src/glove.c
...
2. 根据属主或属组进行搜索
属主和属组可以使用 ID 或名称的方式指定:
-uid UID
-user UserName
-gid GID
-group GroupName
$ find / -uid 1000 -print
/home/openstack
/home/openstack/.mozilla
/home/openstack/.mozilla/extensions
...
$ find / -user root -print
/
/boot
/boot/efi
/boot/efi/EFI
...
3. 根据文件类型进行搜索
-type FileType
:FileType 可以是b, c, d, p, f, l, s
,分别表示块设备文件、字符设备文件、目录、管道、普通文件、符号链接、套接字文件。
$ find / -type s -print
/dev/log
/run/openvswitch/ovs-vswitchd.18732.ctl
/run/openvswitch/ovsdb-server.18660.ctl
...
4. 根据文件大小进行搜索
-size Size
:Size 可以为n, +n, -n
,分别表示刚好为 n、大于 n、小于 n;大小 n 的单位可以为b, c, w, k, M, G
,分别表示块(512字节)、字节、字、KB、MB、GB。
$ find . -size +100M -print
./as-skitter.txt
./weibo normal.jar
./weibo.jar
...
5. 逻辑操作
!
:逻辑非;-a
:逻辑与;-o
:逻辑或。
$ find . ! -size +100M -print
.
./.bash_logout
./.bash_profile
...
$ find . \( -name '*.txt' -o -name '*.sh' \) -print
./.cache/tracker/db-version.txt
...
./rpmbuild/BUILD/openvswitch-2.11.0/boot.sh
...