find顾名思义就是找寻的意思,在linux中经常使用这个命令来找寻文件,find的基本用法格式为


       # find [options][查找路径][查找条件][处理动作]


    1、find的基本用法为在指定路径内寻找指定的文件,比如要查找/etc/目录下有没有一个叫base.repo的文件,可以使用如下命令进行查找。

# find /etc/ -name base.repo
/etc/yum.repos.d/base.repo (查找结果)

   其中“-name”后面紧跟要查找的文件,用来指定需要查找的文件,若想要查找的文件名不区分大小写,则要使用“-iname”选项来替换“-name”。“/etc”表示在那个路径中查找。find默认会递归查找目录下的子目录。

   2、find类似大多数命令一样,可以支持使用通配符来指定一类要查找的文件,常用通配符有“* ? [] [^]”等。例如上面的问题可改为查找/etc目录下以.repo结尾的文件,就可以使用下面的命令了。

# find /etc/ -name *.repo (下面是查找结果)
/etc/yum.repos.d/CentOS-Vault.repo
/etc/yum.repos.d/CentOS-Debuginfo.repo
/etc/yum.repos.d/base.repo
/etc/yum.repos.d/CentOS-Media.repo

若要查找包含特点字符的文件,同样可以使用通配符的办法来解决。比如我们要找/var/目录下中间包含“base”字符的文件,可以使用下面的命令。

# find /var/ -name *base* (下面是结果)
/var/cache/yum/x86_64/6/base
/var/lib/yum/yumdb/g/aaf3760fe86261ff92d897ca4b78460b303faf72-gstreamer-plugins-base-0.10.29-2.el6-x86_64
/var/lib/yum/yumdb/b/d542f398dcd0609e9b6a6bf95e5fd09276c43344-basesystem-10.0-4.el6-noarch
/var/lib/yum/yumdb/s/86cdc635936f7ba038a18886a4a220a1df42bbb6-system-config-firewall-base-1.2.27-5.el6-noarch
/var/lib/yum/yumdb/s/3373b0fcb1e3575347d4089ac387cc9414c71768-system-config-keyboard-base-1.3.1-5.el6-x86_64
/var/lib/yum/yumdb/n/7bafb403fa06585a660e6bc46b2bee1d32dea4cd-ncurses-base-5.7-3.20090208.el6-x86_64
/var/lib/yum/yumdb/k/e1fe63e74f8f4133db2b08042fdd9142574058a6-khmeros-base-fonts-5.0-9.el6-noarch
/var/lib/yum/repos/x86_64/6/base
/var/run/ConsoleKit/database

   3、用# ls -l 选项看到的长格式文件属性几乎都可以作为find命令的查找条件,比如指定查找“/tmp”目录下,属主是root的文件。可以使用如下命令。

# find /tmp/ -user root (下面是结果)
/tmp/
/tmp/.esd-0
/tmp/.esd-0/socket
/tmp/.ICE-unix
/tmp/keyring-m4jhna
/tmp/keyring-m4jhna/socket
/tmp/keyring-m4jhna/socket.pkcs11
/tmp/keyring-m4jhna/socket.ssh
/tmp/pulse-fRmCxohkSeOG
/tmp/pulse-fRmCxohkSeOG/native

除了“-user”指定属主之外还可以使用“-group”指定属组、“-uid”指定用户ID、“-gid”指定组ID、“-nouser”指定没有属主的文件、“-nogroup”指定没有属组的文件。

   4、find除了上述指定还可以指定文件类型,-type 后面接限定文件类型,就可以查找到指定的文件类型了。比如要查找/tmp/下的目录文件可以使用如下命令:wKiom1MUipPx3XsLAAIsXPebO9o129.jpg

诸如此类的还有f:普通文件、b:随机设备、c:字符串设备、l:链接文件、s:套接字等