Linux 四个查找命令

Linux中查找文件主要有四个指令:find,which,whereis,locate。今天稍微整理一下他们的用法。可能有理解错误的地方,以后慢慢成长,慢慢修改吧。

find

find - search for files in a directory hierarchy

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

1
2
3
4
5
6
find [搜索范围] [选项] 

常用选项
-name<查找方式> :按照指定的文件名查找模式查找文件
-user<用户名> :查找属于指定用户名的所有文件
-size<文件大小> :按照指定的文件大小查找文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
find . -amin -10 # 查找在系统中最后10分钟访问的文件
find . -atime -2 # 查找在系统中最后48小时访问的文件
find . -[empty()](http://www.xfcodes.com/php/hanshu/32808.htm) # 查找在系统中为空的文件或者文件夹
find . -group cat # 查找在系统中属于 groupcat的文件
find . -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find . -mtime -1 #查找在系统中最后24小时里修改过的文件
find . -nouser #查找在系统中属于作废用户的文件
find . -user fred #查找在系统中属于FRED这个用户的文件

find /home -name hello.txt #根据名称查找/home目录下的hello.txt文件
find /opt -user nobody #查找/opt目录下,用户名为nobody的文件
find / -size +5M #查找整个linux系统大于5m的文件(+n 大于,-n 小于,n 等于)


find . -type f | xargs grep 'your_string' #在当前目录搜索文件内容含有某字符串(大小写敏感)的文件
find . -type f -name '*.sh' | xargs grep 'your_string' #在当前目录搜索文件内容含有某字符串(大小写敏感)的特定文件
find . -type f -name '*.sh' | xargs grep -i 'your_string' 在当前目录搜索文件内容含有某字符串(忽略大小写)的特定文件

which

which - shows the full path of (shell) commands.

用于查找可直接执行的命令,只能查找可执行文件

1
2
3
4
[[email protected] ~]# which mysql
/usr/bin/mysql
[[email protected] ~]# which pwd
/usr/bin/pwd

whereis

whereis - locate the binary, source, and manual page files for a command

用于查可直接执行的命令、源文件和man文件

1
2
3
4
[[email protected] ~]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
[[email protected] /]# whereis pwd
pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz

locate

locate指令可以快速定位文件路径。

locate指令利用事先建立的系统中所有文件名称和路径的locate数据库实现快速定位给定的文件。

locate指令无需遍历整个文件系统,查询速度较快。

为了保证查询结果的准确度,管理员必须定期更新locate时刻。
updatedb

这个很少用应该

关注博主不迷路

联系博主


本博客所有文章除特别声明外,均为原创。版权归博主小马所有。任何团体、机构、媒体、网站、公众号及个人不得转载。如需转载,请联系博主(关于页面)。如其他团体、机构、媒体、网站、博客或个人未经博主允许擅自转载使用,请自负版权等法律责任!