最近在学Linux,和很多初学者一样,有一大堆的操作命令要去熟悉和掌握,由于Linux秉承“一切皆文件”的思想,因此我们在操作中经常会使用到文件查找的命令喽,下面就简单介绍下在Linux中比较常用的查找命令:
一、which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
也就是说它返回的是你该命令所处的位置。
举个例子哈,比如说我现在看下使用gcc这个命令当前所在的路径,我用which查找下:
二、whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
简单来说就是查找你当前系统是否安装了该程序,如果安装了就显示该程序的路径。
下面就还以gcc为例:
因为没有给参数,所以将所有信息都显示出来了,如果我们只想看说明文件的位置就用-m参数:
这样它就只讲你所需要的路径给出了。
下面是一些whereis的命令参数:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
三、locate
说到locate,其实它基本已经能够完成我们基本所需的查找需求,并且速度很快,这是因为它是在一个库中进行查找的,上面的whereis也是哦。而不是通过硬盘来查找的,这个数据库是liunx自动创建的,并且每天更新一次。
下面我们还是看看它的用法吧:
其实用起来很简单,一般用# locate your_file_name 的形式就可以了,比如我要查找一个名为11_26.c的一个文件:
再用之前最好先执行下updatedb更新下,然后再进行使用。
z再给一些常用的参数:
-n 至多显示n个输出。
-h 显示辅助讯息
-v 显示更多的讯息
-V 显示程式的版本讯息
四、find
关于find我就用一句话来形容它:find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。上面说了locate是在一个库里查找文件,因此对于一些有新变动的文件,而你的库还没更新时,这些文件你是用locate找不到的,这时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、显示下今天一天在code目录中访问了哪些文件:
2、再看看10天内在c目录下更改了哪些文件:
3、再看看7天内在c目录下创建了哪些文件:
4、再找找大小超过10000000c的文件:
5、在/查找11_26.c文件:
6、在/下查找code目录:
还有好多的参数就不一一列举了,大家一起去电脑上体验吧,而且参数组合使用可以让你对你的文件为所欲为,哈哈....
拜了个拜!
本文出自 “Waitting” 博客,转载请与作者联系!