linux搜索有哪些文件夹,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命令,待补。。。