设为首页 收藏本站
查看: 1320|回复: 1

[经验分享] linux查询命令

[复制链接]

尚未签到

发表于 2018-5-25 13:20:25 | 显示全部楼层 |阅读模式
  

  

  Linux的五个查找命令:find,locate,whereis,which,type,这里主要讲find和locate两个比较常用,其他三个用的较少就不详细列了
  使用电脑的时候,经常需要查找文件。
  在Linux中,有很多方法可以做到这一点。国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条。大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的。
  1. find
  find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
  find命令的参数;
  

  pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
  -print: find命令将匹配的文件输出到标准输出。
  -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
  -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
  

  #-print 将查找到的文件输出到标准输出
  #-exec   command   {} \;      —–将查到的文件执行command操作,{} 和 \;之间有空格
  #-ok 和-exec相同,只不过在操作前要询用户
  例:find . -name .svn | xargs rm -rf
  ====================================================
  

  -name   filename             #查找名为filename的文件
  -perm                        #按执行权限来查找
  -user    username             #按文件属主来查找
  -group groupname            #按组来查找
  -mtime   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
  -atime    -n +n               #按文件访问时间来查GIN: 0px">
  

  -ctime    -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
  

  -nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
  -nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
  -newer   f1 !f2              找文件,-n指n天以内,+n指n天以前
  -ctime    -n +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
  -nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
  -nouser                      #查无有效属主的文件,即文件的属主在/etc/passwd中不存
  -newer   f1 !f2               #查更改时间比f1新但比f2旧的文件
  -type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件
  -size      n[c]               #查长度为n块[或n字节]的文件
  -depth                       #使查找在进入子目录前先行查找完本目录
  -fstype                     #查更改时间比f1新但比f2旧的文件
  -type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件
  -size      n[c]               #查长度为n块[或n字节]的文件
  -depth                       #使查找在进入子目录前先行查找完本目录
  -fstype                      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
  -mount                       #查文件时不跨越文件系统mount点
  -follow                      #如果遇到符号链接文件,就跟踪链接所指的文件
  -cpio                %;      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
  -mount                       #查文件时不跨越文件系统mount点
  -follow                      #如果遇到符号链接文件,就跟踪链接所指的文件
  -cpio                        #对匹配的文件使用cpio命令,将他们备份到磁带设备中
  -prune                       #忽略某个目录
  =====================================================
  $find   ~   -name   "*.txt"   -print    #在$HOME中查.txt文件并显示
  $find   .    -name   "*.txt"   -print
  $find   .    -name   "[A-Z]*"   -print   #查以大写字母开头的文件
  $find   /etc   -name   "host*"   -print #查以host开头的文件
  $find   .   -name   "[a-z][a-z][0–9][0–9].txt"    -print   #查以两个小写字母和两个数字开头的txt文件
  $find .   -perm   755   -print
  $find   .   -perm -007   -exec ls -l {} \;   #查所有用户都可读写执行的文件同-perm 777
  $find   . -type d   -print
  $find   .   !   -type   d   -print
  $find   .   -type l   -print
  

  $find   .   -size   +1000000c   -print        #查长度大于1Mb的文件
  $find   .   -size   100c         -print       # 查长度为100c的文件
  $find   .   -size   +10   -print              #查长度超过期作废10块的文件(1块=512字节)
  

  

  

  

  2. locate
  locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
  locate命令参数说明:
  在一般的 distribution 之中,数据库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用
  # locate your_file_name
  的型式就可以了。 参数:
  -u -U :建立数据库,-u 会由根目录开始,-U 则可以指定开始的位置。
  -e :将 排除在寻找的范围之外。
  -l :如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。 web教程网
  -f :将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在数据库中。
  -q :安静模式,不会显示任何错误讯息。
  -n :至多显示 个输出。
  -r :使用正规运算式 做寻找的条件。
  -o :指定数据库存的名称。
  -d :指定数据库的路径
  -h :显示辅助讯息
  -v :显示更多的讯息
  -V :显示程序的版本讯息
  ======================================================================================
  $locate chdrv : 寻找所有叫 chdrv 的档案
  $locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
  $locate -u : 建立数据库
  $locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
  

  locate命令的使用实例:
  $ locate /etc/sh
  搜索etc目录下所有以sh开头的文件。
  $ locate ~/m
  搜索用户主目录下,所有以m开头的文件。
  $ locate -i ~/m
  搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
  

  3. whereis
  whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
  whereis命令的使用实例:
  $ whereis grep
  

  

  4. which
  which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
  which命令的使用实例:
  $ which grep
  

  

  

  5. type
  type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
  type命令的使用实例:
  $ type cd
  系统会提示,cd是shell的自带命令(build-in)。
  $ type grep
  系统会提示,grep是一个外部命令,并显示该命令的路径。
  $ type -p grep
  加上-p参数后,就相当于which命令。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481023-1-1.html 上篇帖子: linux 心得 下篇帖子: linux 配置jdk
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表