Linux常用命令之文件搜索命令

find命令

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法

find [搜索范围][匹配条件]

实例

$find /etc -name init(在目录/etc中查找文件init)
$find /etc -name *init*(在目录/etc中查找包含init的文件)
$find /etc -iname init(在目录/etc中查找文件init或INIT)$find / -size +204800(在根目录下查找大于100MB的文件,+n大于,-n小于,n等于)$find /home -user bbb(在根目录下查找所有者为bbb的文件,-group根据所属组查找)$dind /etc -cmin -5(在/etc下查找5分钟内被修改过属性的文件和目录,-amin访问世家你access,-cmin文件属性change,-mmin文件内容modify)$find /etc -size +163840 -a -size -204800(在/etc下查找大于80MB小于100MB的文件,-a表示两个条件同时满足,-o表示两个条件满足任意一个即可)$find /etc -name inittab -exec ls -l {}\;(在/etc下查找inittab文件并显示其详细信息)

locate/slocate命令

locate命令slocate命令都用来查找文件或目录。

locate命令其实是<span><a target="_blank" href="https://www.ancii.com/link/v1/W5Y30KTKpQNLnWPU3APn673ddE_E2rWLmgivpr5Ou8s/" rel="nofollow" title="find">find</a> -name</span>的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

语法

locate/slocate(选项)(参数)

选项

-d<目录>或--database=<目录>:指定数据库所在的目录;
-u:更新slocate数据库;
--help:显示帮助;
--version:显示版本信息。

参数

查找字符串:要查找的文件名中含有的字符串。

实例

搜索etc目录下所有以sh开头的文件:

locate /etc/sh

搜索用户主目录下,所有以m开头的文件:

locate ~/m

搜索用户主目录下,所有以m开头的文件,并且忽略大小写:

locate -i ~/m

which命令

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

语法

which(选项)(参数)

选项

-n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
-w:指定输出时栏位的宽度;
-V:显示版本信息。

参数

指令名:指令名列表。

实例

查找文件、显示命令路径:

[ ~]# which pwd
/bin/pwd

[ ~]#  which adduser
/usr/sbin/adduser

说明:which是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!

相关推荐