1、find 命令
- 谨慎使用
find
等搜索、查找类的命令,因为搜索也是需要消耗系统资源的,特别是在 Linux 作为服务器仍在对外提供服务的时候,请谨慎使用一些比较耗时、消耗资源的命令。
1.1、按文件或目录名称搜索
选项
-name
,不忽略大小写;选项-iname
,忽略大小写。find /tmp -name test
: 从目录/tmp
下中搜索文件或目录名是test
的。注意,这里所搜索出来文件或目录,要求名称是test
且一字不差。find /tmp -name *test*
: 从目录/tmp
下中搜索文件或目录名含有test
的。*
是通配符,表示任意字符(含零个);通配符?
表示一个字符。
1.2、按文件或目录大小搜索
-size
选项-size
选项后面的数字即大小,需要经过简单的计算,因为这个数字的单位是“Linux 中数据块”,一个数据块的大小是 512 字节(即 0.5 KB)。
1.3、按文件或目录的所有者或所属组搜索
-user
选项:按所有者查找。-group
选项:按所属组查找。
1.4、按时间搜索
-
-5
表示“多少时间之内”;+5
表示“超过多长时间”。
1.5、按文件或目录类型搜索
1.6、find 命令其他事项
-
-ok
与-exec
的区别:-ok
某些进行操作之前进行询问。
2、locate 命令
locate
与find
不同:find
是去硬盘找,locate
只在/var/lib/slocate
资料库中找。locate
的速度比find
快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db
中。这个数据库是定期更新的。这个数据库的更新由于不是实时的,所以,有些像新创建的文件或目录是无法通过locate
命令搜索到的。可以使用
updatedb
命令来手动更新这个数据库。locate
命令无法搜索到/tmp
目录下的文件或目录,因为在资料库中是不收录/tmp
的。
3、which 命令
4、whereis 命令
5、grep 命令
grep
命令只能针对文件使用而不能针对目录使用!grep
命令中的“指定字串”的部分可以使用正则表达式中的^
、$
。
例如:grep ^# /tmp/test-1/1.txt
(以“#”开头的行)、grep -i d$ /tmp/test-1/1.txt
(以“d”或“D”结尾的行)