Linux常见几个查找命令

以下命令是很久以前学习Linux,网上查到的命令自己做了下总结。记录在这里方便以后查看。
Linux常见五种查找命令
1、which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
也就是说它返回的是你该命令所处的位置。
举个例子哈,比如说我现在看下使用gcc这个命令当前所在的路径,我用which查找下:

2、whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
简单来说就是查找你当前系统是否安装了该程序,如果安装了就显示该程序的路径。
下面就还以gcc为例:
因为没有给参数,所以将所有信息都显示出来了,如果我们只想看说明文件的位置就用-m参数:

这样它就只讲你所需要的路径给出了。
下面是一些whereis的命令参数:

-b   定位(查看位置)可执行文件。
-m   定位(查看位置)帮助文件。
-s   定位(查看位置)源代码文件。
-B   指定搜索可执行文件的路径。
-M   指定搜索帮助文件的路径。
-S   指定搜索源代码文件的路径。
-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

3、locate
说到locate,其实它基本已经能够完成我们基本所需的查找需求,并且速度很快,这是因为它是在一个库中进行查找的,上面的whereis也是哦。而不是通过硬盘来查找的,这个数据库是liunx自动创建的,并且每天更新一次。
下面我们还是看看它的用法吧:
其实用起来很简单,一般用 # locate your_file_name 的形式就可以了,比如我要查找一个名为11_26.c的一个文件:

再用之前最好先执行下updatedb更新下,然后再进行使用。
再给一些常用的参数:

 -n  至多显示n个输出。
 -h  显示辅助讯息
 -v  显示更多的讯息
 -V  显示程式的版本讯息

4、find
find是最常见和最强大的查找命令,可以用它找到任何想找的文件。上面说了locate是在一个库里查找文件,因此对于一些有新变动的文件,而你的库还没更新时,这些文件你是用locate找不到的,这时find就派上用场了,find可是从硬盘里一个一个进行查找的,正因为这样它的速度也会相当慢,一般都把它丢到后台运行。
为什么说它功能强大呢?
因为它有很多的参数:

pathname:       #find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: #find命令将匹配的文件输出到标准输出。
-exec: #find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command'{ } \;,注意{ }和\;之间的空格。
-ok: #和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-name   filename            #查找名为filename的文件
-perm                    		 #按执行权限来查找
-user    username 			 #按文件属主来查找
-group groupname  		 #按组来查找
-mtime   -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n               #按文件访问时间来查
-ctime    -n +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                       #查无有效属主的文件,即文件的属主在/etc/passwd中不存在
-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                       #忽略某个目录

下面来举几个例子来体会下吧:
例子1:
基本格式:find path expression
    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小时(2天)访问的文件
    (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用户的文件

例子2:
1、显示下今天一天在code目录中访问了哪些文件:
2、再看看10天内在c目录下更改了哪些文件:

3、再看看7天内在c目录下创建了哪些文件:
4、再找找大小超过10000000c的文件:
5、在/查找11_26.c文件:

6、在/下查找code目录:

5、grep
grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。

grep [-选项] [字串] [文件名]

寻找某字串内容工具:
  有些时候,我们存储文件时随手乱取了一个文件名,事后自己都忘了那个文件名叫什么,连开头第一个字母都想不起来。那么,如果您还记得该文件一点特殊的词语,应该可以用 grep 命令找到。
  例如,我们想在一个目录的200个文件里面,找出哪一个文件提到“排版”这个词语:

grep 排版 *.txt

找到了两个文件有此字样。然后您再自行调出看看到底哪一篇才是您所要的即可。寻找时注意尽量寻找特殊词语,如果您输入“然后”、“这样”、“不是”、“电脑”……这类太普遍的词语,可能几百篇文章中都有,那就失去了用 grep 找文件的意义了。
如果想要让它凡是符合条件的只出现一次的话,加上 -l 选项就可以了,如图2-33所示。
图2-33 增加-l选项后的grep命令

其他常用的选项还有:

 -n 同时列出该词语出现在文章的第几行。
  -c 计算一下该字串出现的次数。
-i 比对的时候,不计较大小写的不同

还有个type命令,待补。。。

你可能感兴趣的:(Linux学习笔记)