Linux中的四种查找文件方法
一、which which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。 也就是说它返回的是你该命令所处的位置。 举个例子,比如说现在看下使用gcc这个命令当前所在的路径,用which查找下:
二、whereis whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 简单来说就是查找你当前系统是否安装了该程序,如果安装了就显示该程序的路径。 下面就还以gcc为例:
这样它就将你所需要的路径给出了。 下面是一些whereis的命令参数: -b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。 -B 指定搜索可执行文件的路径。 -M 指定搜索帮助文件的路径。 -S 指定搜索源代码文件的路径。
三、locate 说到locate,其实它基本已经能够完成我们基本所需的查找需求,并且速度很快,这是因为它是在一个库中进行查找的,上面的whereis也是哦。而不是通过硬盘来查找的,这个数据库是liunx自动创建的,并且每天更新一次。 下面我们还是看看它的用法: 其实用起来很简单,一般用 # locate your_file_name 的形式就可以了,比如要查找一个名为yeyz_dev的一个文件:
再用之前最好先执行下updatedb更新下,然后再进行使用。 再给一些常用的参数: -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
#忽略某个目录
例子:查找名称为yeyz_dev的文件