定位、查找文件的命令
命令 | 功能 | 命令 | 功能 |
which | 从path中找出文件的位置 | find | 找出所有符合要求的文件 |
whereis | 找出特定程序的路径 | locate | 从索引中找出文件位置 |
1.which命令
[root@localhost /]# which ls
alias ls='ls --color=auto'
/bin/ls
[root@localhost /]# which nginx
/usr/bin/nginx
2.whereis命令
说明:
找出特定程序的可执行文件、源代码文件以及manpage的路径。你所提供的name会被先除去前置的路径以及任何.ext形式的扩展名。
whereis 只会在标准的Linux目录中进行搜索。
常用选项
-b
只搜索可执行文件。
-m
只搜索manpage。
-s
只搜索源代码文件。
-B directory
更改或限定搜索可执行的文件的目录。
-M directory
更改或限定搜索manpage的目录。
-S directory
更改或限定搜索源代码文件的目录。
实例:[root@localhost /]# whereis grep
grep: /bin/grep /usr/share/man/man1p/grep.1p.gz /usr/share/man/man1/grep.1.gz
[root@localhost /]# whereis -b nginx
nginx: /usr/bin/nginx /usr/local/nginx
3.find命令
以paths为搜索起点逐层往下找出每一个符合expression条件的文件,并对该文件执行action所代表的动作。expression是搜索条件,它由一个代表匹配项目的选项以及一个代表匹配模式的参数构成。
$ find <指定目录> <指定条件> <指定动作>
- <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
- <指定条件>: 所要搜索的文件的特征。
- <指定动作>: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
action是处理动作,它有一个代表“处理方式”的选项以及一个操作参数构成。若不指定action,则默认动作是显示出文件名。
常用的搜索条件
-name pattern
-path pattern
-lname pattern
找出名称、路径名称或符号链接的目标匹配pattern模式的文件。pattern可以包含shell的文件名通配符,路径是相对于搜索起点的。
常见处理动作
显示出文件的相对路径(相对于搜索起点)。
-exec cmd /;
执行指定的shell命令。若cmd含有任何shell特殊字符,则他们之前都必须加上/符号,以免shell立刻执行他们。在cmd里,可以用”{}”符号(包括双引号)表示find所找出的文件。
1.按照文件名查找
(1)find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在/etc目录下文件httpd.conf
(3)find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件
2.按照文件特征查找
(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -2 # 查找在系统中最后48小时访问的文件
(3)find / -empty # 查找在系统中为空的文件或者文件夹
(4)find / -group cat # 查找在系统中属于 group为cat的文件
(5)find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime -1 #查找在系统中最后24小时里修改过的文件
(7)find / -user fred #查找在系统中属于fred这个用户的文件
(8)find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小于1000KB的文件
3.使用混合查找方式查找文件
参数有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件
(3)find /tmp ! -user panda #在/tmp目录中查找所有不属于panda用户的文件
[root@localhost /]# find / -name nginx.conf
/www/server/nginx/conf/nginx.conf
/www/server/nginx/src/conf/nginx.conf
[root@localhost /]# find /www/server/nginx/conf -name nginx.conf
/www/server/nginx/conf/nginx.conf
4.locate命令
[root@localhost /]# locate nginx.conf
/www/server/nginx/conf/nginx.conf
/www/server/nginx/conf/nginx.conf.default
/www/server/nginx/src/conf/nginx.conf
5.type命令
[root@localhost /]# type cd
cd is a shell builtin
[root@localhost /]# type ls
ls is aliased to `ls --color=auto'
[root@localhost /]# type grep
grep is /bin/grep
cd是shell的自带命令(build-in)grep是一个外部命令,并显示该命令的路径。
[root@localhost /]# type -p grep
/bin/grep
加上-p参数后,就相当于which命令。