每一种操作系统都有成千上万的文件组成,对于linux这样“一切皆文件”的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件查找功能,但是对linux这一功能可能并不是很熟悉。
其实想玩linux的你更要牢牢掌握这个命令,因为linux不像windows那样有固定的文件名后缀,并且因为linux阵营下百家争鸣的特性,一个相同的文件在不同的发行版,可能会有不同,所以如果你能牢牢掌握find命令的使用,你在摸索linux的道路上将会顺利很多,同时你会发现linux下文件查找功能其实很简单,而且要比windows下查找功能强大很多很多!Linux下查找文件的命令有两个:locate 和 find。(今天重点说明find-name模糊查找文件)
首先说下locate,locate这个命令是对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了用locate查找文件速度很快,但是locate命令只能对文件进行模糊匹配,在精确度上来说差了点,简单介绍下它的两个选项:
#locate -i //查找文件的时候不区分大小写 比如:locate –i passwd -n //只显示查找结果的前N行 比如:locate -n 5 passwd
另一个是find,find在不指定查找目录的情况下是对整个系统进行遍历查找。find命令十分的好用,特别是在查找文件的时候,这个时候需要和文件通配符一起使用。下面重点说下find -name模糊查找文件。
linux中find -name模糊查找文件,一般用通配符进行匹配,通配符有以下3种:
*表示 通配任意的字符 ?表示 通配任意的单个字符 [ ] 表示 通配括号里面的任意一个字符
1. 当前目录下查找tomcat开头的文件
find -name tomcat*
或者
find . -name tomcat* //. 表示当前目录
2. /home 目录下查找后缀名是log的文件
find /home -name *.log //~ 表示当前目录
或者
find ~ -name *.log //~ 表示当前目录
3. 在根目录下查找小写字母开头的txt文件
find / -name [a-z]*.txt
4. 在当前目录及子目录中,查找不是tom开头的txt文件
find -name "tom*" -prune -o -name "*.txt"
5. 在当前目录除java之外的子目录内搜索log文件
find -path "./code" -prune -o -name "*.log"