源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Linux中文件的五个查找命令总结

  • 时间:2021-04-26 11:41 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Linux中文件的五个查找命令总结
[b]Linux的查找命令有5个,分别如下:[/b]     [code]which[/code]:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果;     [code]type[/code]:用于区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于[code]which[/code]命令。[code]type[/code]命令其实不能算查找命令;     [code]whereis[/code]:只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s);     [code]locate[/code]:相当于[code]find -name[/code],可快速查找文件;     [code]find[/code]:最常用和最强大的查找命令,可以用它找到任何想找的文件。 [b]注意:[/b]     通常[code]find[/code]不很常用,因为速度慢!     常都是先使用[code]whereis[/code]或者[code]locate[/code]来检查,当真的找不到了,才用find查找。     是因为[code]whereis[/code]与[code]locate[/code]是利用数据库来查找数据,所以相当快速,而且没有实际查询硬盘,比较节省时间。     [code]whereis[/code]和[code]locate[/code]寻找的数据是由已创建的数据 [code]/var/lib/ [/code]中查找。但是数据库的更新默认是每天更新一次(不同系统可能会有差异),所以当新建文件或删除文件后去查找该文件,[code]whereis[/code]和[code]locate[/code]会告诉你文件“not found”,因为必须更新数据库了。     要手动更新数据库的方法也很简单,直接输入[code]updatedb[/code]即可。[code]updatedb[/code]命令回去读取/etc/updatedb.conf中的配置,然后去硬盘里面进行查找文件名操作,最后更新整个数据库文件。 [b]下面详细讲解以上5个命令的使用:[/b] [b]一、which:查找系统命令位置[/b] [code]which[/code]命令在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。 [b]which命令的格式如下:[/b]
which [-a] command
[b]which命令的参数如下:[/b]      -a:将所有由PATH目录中可以找到的命令均列出来,而不是只列出第一个被找到的命令。 [b]例子:[/b]
[root@www ~] # which ifconfig
/sbin/ifconfig
[b]二、whereis:程序名搜索[/b] [code]whereis[/code]命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。 [b]whereis命令的格式如下:[/b]
whereis [-bmsu] 文件或目录名
[b]whereis命令的参数如下:[/b]      -b 只查找二进制格式的文件      -m 只查找在说明文件manual路径下的文件      -s 只招source源文件      -u 查找不在上述三个选项当中的其他特殊文件 [b]例子:[/b]
[root@www ~] # whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@www ~] # whereis -m ifconfig
ifconfig: /usr/share/man/man8/ifconfig.8.gz
[b]三、locate:利用数据库查找文件[/b] [b]locate命令的格式如下:[/b]
locate [-ir] keyword
[b]locate命令的参数如下:[/b]     -i:忽略大小写差异;     -r:后面可接正则表达式的实现方式。 [b]例如:[/b]
[root@www ~] # locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
[b]四、find:查找任何文件[/b] [b]find命令的格式如下:[/b]
find [PATH] [option] [action]
[b]4.1 find参数:基于文件名的搜索[/b] 与文件名有关的参数如下:    -name filename:查找文件名为filename的文件。filename可使用正则表达式表示。 例子:
[root@www ~] # find / -name passwd
查找文件名为passwd的文件。 [b]4.2 find参数:基于文件大小的搜索[/b] [b]与文件大小有关的参数如下:[/b]      -size SIZE:查找文件大小刚好等于SIZE的文件;      -size -SIZE:查找文件大小大于SIZE的文件;      -size +SIZE:查找文件大小小于SIZE的文件。 [b]其中,SIZE的单位有:[/b]      c —— byte,字节;      w —— 字(2字节);      b —— bit,块(512字节);      k —— 千字节;      M —— 兆字节;      G —— 吉字节。 [b]例子:[/b]
[root@www ~] # find . -type f -size +10k
搜索大于10KB的文件
[root@www ~] # find . -type f -size 10k
搜索等于10KB的文件
[b]4.3 find参数:基于文件类型的搜索[/b] 与文件类型有关的参数如下:      -type TYPE:查找文件的类型为TYPE的文件。 TYPE的参数列表有:      f :普通文件;      l :符号连接;      d :目录;      c :字符设备;      b :块设备;      s :套接字;      p :FIFO。 [b]例子:[/b]
[root@www ~] # find /var -type s
查找/var目录下所有类型为socket的文件。 [b]4.4 find参数:基于目录深度的搜索[/b] 与目录深度有关的参数如下:     -maxdepth n:n为数字,表示向下最大深度限制为n;     -mindepth n:n为数字,搜索出深度距离当前目录至少n个子目录的所有文件。 [b]例子:[/b]
[root@www ~] # find . -maxdepth 3 -type f
向下最大深度限制为3
[root@www ~] # find . -mindepth 2 -type f
搜索出深度距离当前目录至少2个子目录的所有文件
[b]4.5 find参数:基于时间进行搜索[/b] 与时间有关的参数共有 -atime、-ctime、-mtime。下面以 -mtime 说明:      -mtime n: n为数字,列出在n天之前的“一天之内”被更改过的文件名;      -mtime +n:列出在n天之前(不含第n天本身)被更改过的文件名;      -mtime -n:列出在n天之内(不含第n天本身)被更改过的文件名;      -newer file:file为一个存在的文件,列出比file还要新的文件名。 [b]例子:[/b]
[root@www ~] # find /etc -mtime 0
查找从现在开始到24小时前,/etc目录下所有改动过内容的文件都会被列出来。
[root@www ~] # find /ect -newer /etc/passwd
查找/etc目录下,所有比/etc/passwd文件更新的文件。
[b]4.6 find参数:基于用户或用户组名进行搜索[/b] 与用户或用户组名有关的参数如下:      -uid n:n为数字,表示用户的UID;      -gid n:n为数字,表示用户的GID;      -user name:name为用户账号名称;      -group name:name为用户组名;      -nouser:寻找文件的所有者不存在于/etc/passwd的文件;      -nogroup:寻找文件的所有用户组不存在于/etc/group的文件。 [b]例子:[/b]
[root@www ~] # find /home -user root
查找root用户在/home目录下的所有文件。 [b]4.7 find参数:基于文件权限进行搜索[/b] 与文件权限有关的参数如下:      -perm mode:查找文件权限刚好等于mode的文件;      -perm +mode:查找文件权限“包含任一mode的权限”的文件;      -perm -mode:查找文件权限“必须要全部包括mode的权限”的文件。 [b]例子:[/b]
[root@www ~] # find / -perm +7000
查找必须含有---s--s--t的所有三个权限的文件。 [b]4.8 find命令的其它一些技巧[/b] 4.8.1 查找所有长度为零的文件:
find . -empty
4.8.2 查找在n分钟内被修改的文件:
find . -cmin -60
查找一个小时内文件状态改变的文件(也就是60分钟内)。 4.8.3 仅仅查找非隐藏的文件(不显示隐藏文件):
find . \( ! -regex ".*/\..*" \)
显示当前目录及其子目录下的文件,并且只列出非隐藏文件。 [b]五、type:显示指定命令的类型[/b] [code]type[/code]命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。 [b]type命令格式如下:[/b]
 type [option] [commond]
[b]type命令的参数有:[/b]      -t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;      -p:如果给出的指令为外部指令,则显示其绝对路径;      -a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。 [b]命令的类型可能有如下几种:[/b]      alias: 别名;      keyword: 关键字,Shell保留字;      function: 函数,Shell函数;      builtin: 内建命令,Shell内建命令;      file: 文件,磁盘文件,外部命令;      unfound: 没有找到。 [b]例子:[/b]
[root@www ~] # type cd
cd is a shell builtin
[root@www ~] # type date 
date is /bin/date 
[root@www ~] # type mysql
mysql is /usr/bin/mysql
[root@www ~] # type nginx
-bash: type: nginx: not found
[root@www ~] # type if
if is a shell keyword
[b]总结[/b] 以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部