Linux Mint (专题四:查找文件)


在Linux中我们经常会查找一些内容,而Linux中一切皆文件,我们想要查找的内容就是文件。查找文件时必然会使用查找命令,接下来我把自己经常使用的查找命令总结出来,供大家参考,也就是今天的主题:查找文件。

常用的查找文件命令有:find,grep和which.接下来我们分别介绍这三种查找命令:

1.find查找命令

find 是一个常用的查找命令,就像我们遇到技术难题时首先会想到google一下。当我们想查找文件时,就需find一下。find可以依据文件的时间(mtime),文件拥有者(owner),文件名称,文件大小,文件类型查找文件。

常用的格式是: find path condition filename。

  • path表示查找的目录,如果不指定path,那么会查找整个硬盘,在查找的时候最好指定path,这样可以缩小查找范围进而提高查找效率;
  • condition表示查找的条件,常用的是-name表示依据文件的名字来查找;
  • filename就是我们需要查找的文件,我们可以指定具体的文件名,也可以使用正则表达式。比如想查找string.h这个文件,可以使用全名,也可以使用str*.h。这对于文件名字比较长的文件很有用,当然,搜索出来的结果可能会有多个,也就是说搜索结果不准确,如果想要搜索结果准确一些,最好是使用全名。

接下来举例子来说明:

~$ find /usr/include/ -name stdio.h  //在/usr/include/目录中查找名字为stdio.h的文件,结果如下
/usr/include/c++/4.8/tr1/stdio.h
/usr/include/i386-linux-gnu/bits/stdio.h
/usr/include/stdio.h

2.grep查找命令

grep 也是常用的查找命令,经常用来查找文件中是否有某个关键字或者字符串。

常用的格式是: grep operation content file.

  • operation表示如何进行查找,或者说查找方式。我一般不使用它,有时候使用- v来做反向查找;
  • content就是查找的内容;
  • file表示在file中查找content;

接下来举例子来说明:

~$ grep -n printf /usr/include/stdio.h   //在stdio.h中查找printf函数,结果如下
356:extern int fprintf (FILE *__restrict __stream,
362:extern int printf (const char *__restrict __format, ...);
364:extern int sprintf (char *__restrict __s,
371:extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
377:extern int vprintf (const char *__restrict __format, _G_va_list __arg);
379:extern int vsprintf (char *__restrict __s, const char *__restrict __format,
386:extern int snprintf (char *__restrict __s, size_t __maxlen,
388:     __THROWNL __attribute__ ((__format__ (__printf__, 3, 4)));
… //内容较多,省略不写

这里使用了-n这种operation,表示在查找结果中显示具体的行数。我们可以看到在stdio.h文件中356,362等行都有printf函数。

3.which查找命令

which 也是一种查找命令,它的使用频率没有find和grep高。它查找的内容是我们经常使用各种Linux命令,查找结果是这些命令的路径。鉴于这点,它专门用来查找linux命令在当前系统中的路径,进而判断当前系统是否支持某个Linux命令。因此,我们可以把它看作是find命令的一种特殊用法。

查找格式:which command.

  • command就是待查找的命令。

which的查找原理还是比较简单的,它在环境变量PATH中查找命令,所以我们看到的查找结果都是Linux命令在系统中的路径,得益于这个查找原理,在使用它查找时不需要指定查找路径。

接下来举例子来说明:

$ which vim //查找vim在当前系统是的路径,结果如下
/usr/bin/vim

最后,我们对这三个查找命令做一些对比和总结:

  • find是在指定的文件系统中查找文件,查找的结果是文件的具体位置(绝对路径)。
  • grep是在指定文件中搜索内容,查找结果是内容在文件中的位置。
  • which可以查找Linux命令所在的位置,查找结果是Linux命令的具体位置(绝对路径)。

我们先总结一下which这个查找命令。它查找的内容比较特殊,因此经常使用它来判断当前系统是否支持某个Linux命令。

我们对比find和grep可以发现,它们两个查找的范围不一样,查找的内容也不一样,不过它们两个配合起来使用,可以提高查找效率。其中提高效率的原理在于,先通过find查找到文件,这样便缩小了查找的范围,进而提高了查找效率。

比如我们刚才举的例子中,我们可以先使用find查找到stdio.h在usr/include/目录下,接下来我们就可以在该目录下的stdio.h文件中查找printf函数了。

关于查找文件的专题就介绍到这里,以后有好的经验了,我再和大家分享。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值