以下命令是很久以前学习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命令,待补。。。