Linux命令进阶篇-文件查看与查找

时间:2022-01-09 17:27:01

  上一篇的博客对于Linux如何在不同目录下跳转和查看目录下内容做出了总结,主要靠cd和ls,很常见也很实用。但是你看到目录下面那么多不同花花绿绿的文件,心里是不是痒痒,是不是想进去一探究竟,有办法!

  先介绍一下比较常见的两个命令:cat 和 more。

  cat -n  (在打印的每一行文件内容前显示行号)

  cat命令用于查看文件内容,后面可以接文件名作为参数,接多个文件名同样可以,如下:

  cat  test   test2

  它会将指向文件的内容一起打印在屏幕上,有时候可能会很大一片,如果文件有几十页,那么对于我们查看文件简直是极大的困扰。那么此时用more来解决这个问题再好不过,more不仅可以一行一行的显示文件内容,一页一页的显示对它来说也是轻而易举。

  more   文件名  (打印文件内容)

  more命令会在终端最后一行显示当前已查看文件百分比,按下空格会向下翻动一页,按下enter向下翻动一行,按Q直接退出。这个命令在查看大文件是确实实用,但是还有更强大的 less,已经可以称为文本阅读工具了,两者之间操作非常相似,但是less的强大我光吹你也不懂,反正强就完事儿了。下面来简单介绍下:

  ps:和more一样的操作就不谈了

  1.可以直接使用方向键在文本文件中前后左右滚屏

  2.实现了复杂检索,高亮显示等操作

  3.对与常用文字处理程序按键兼容(vim,Emacs)

  less在查看文件时同样可以向下翻页,按空格就行,但是它同样可以向上翻,按B即可。对于上述的几个亮点,复杂检索比较值得关注一下,毕竟有工具可以用我为什么还一页页的翻呢,偷懒同样可以使你变强!

  less下搜索字符串:“/” 加上查找内容,第一个匹配的字符串会高亮显示,如果想要查找下一个匹配字符串,再次输入“/”,按下回车即可。当然,Linux还提供了专门的命令用于查找文件内容,那就是grep:

  grep 关键词    文件名 (搜索文件中的关键字)

  这个命令可以指定多个文件搜索,举个例子,查找“woyao  shangtian”,可以使用单引号包含空格,完成查找:

  grep  'woyao shangtian'   test.c

  有时候我们可能会遇到这样一种情况,想找一个文件,但我不知道它在哪,怎么办,毕竟Linux的目录可真不少,很容易让人绝望的说。find这时候跳出来了,全都可以交给它。它的主要作用就是在指定范围内查找文件,格式如下:

  find  参数    查找文件范围路径     文件类型或文件名

  在/usr/bin/下查找Zip文件: find  /usr/bin  -name  zip  -print,最后终端上会打印出查找文件的绝对路径。哦,对了,上面提到了文件类型,很有必要介绍一下,Linux的核心便是一切皆文件,那么Linux的文件类型一共有几种呢?

  答案是六种,当然这可能仅仅是我所了解的,欢迎补充!一般文件类型在命令中作为参数出现:

  参数               含义                  参数                含义

     b            块设备文件               f               普通文件

     c            字符设备文件           p               命名管道

     d             目录文件                 l                符号链接

  当然find命令并非完美无缺,对于大批量搜索与对于文件所处范围并不了解时效率是极低的,而locate便是专门解决这一痛点而生的,如果你要找到系统里所有的PDF文件,那么

  locate  *.pdf

  结果在不到一秒的时间里便会直接被打印出来,我很好奇,这个命令是遍历了整个系统的目录找出匹配的文件的话,速度未免也太快了吧,实现这个程序的程序员也太牛了,但是深入了解后我发现其实不然,当然实现这个命令的人还是很牛的,但是人家是用脑子写代码,暴力搜索这个事太low了。locate实际上并没有进入目录,而是建立了一个文件名数据库,查找文件时直接进入数据库检索,确实很有想法,不蛮干很值得学习啊。我们同样是可以更新文件名数据库的,获取管理员权限,然后敲上updatedb就完事儿了。

  以上命令掌握了的话我感觉查看个文件,找个文件那就都只是洒洒水了,多多练习,你就是最帅的Linux玩家!