文件的搜索
本文目录:
- 1、which搜索对象:二进制可执行文件和别名(alias)
- which搜索范围:which是根据『PATH』这个环境变量所规范的路径,去搜寻『运行档』的档名
- which搜索使用格式:which 后面接的是『完整档名』
- 2、whereis搜索对象:【没有参数:任何格式文件
- -b:二进制可执行文件
- -B 只在设置的目录下查找二进制文件
- -m:文件如何使用的手册文件
- -M 只在设置的目录下查找说明文件
- -s 只查找原始代码文件
- -S 只在设置的目录下查找原始代码文件(源文件)
- -u 查找不包含指定类型的文件
- -f 不显示文件名前的路径名称 】
- whereis 搜索范围:whereis 搜寻在数据库里面的数据,搜索范围比which要大。
- whereis搜索使用格式:whereis后面接的是『完整档名』
- 3、locate搜索使用格式:locate 后面接的是『文件的部分名称』
- 【-u 建立数据库,由根目录开始
- -U 建立数据库,可以指定开始的位置
- -e 将排除在寻找的范围之外
- -f 将特定的档案系统排除在外
- -q 安静模式,不会显示任何错误讯息
- -n 至多显示n个输出
- -r 使用正规运算式 做寻找的条件
- -o 指定数据库存的名称
- -d 指定数据库的路径
- -h 显示辅助讯息
- -v 显示更多的讯息
- -V 显示程序的版本讯息 】
- locate 和whereis差不多,只不过locate可以进行模糊查询,搜寻到包含文件名的所有文件,所以当你只记得一部分文件名时,可以用这个来搜寻。
- 使用 whereis 或者是底下要说的 locate 时,都会以『已创建的数据库 /var/lib/mlocate/』文件的内容为准, 因此,有的时后你还会发现使用这两个运行档时,会找到已经被杀掉的文件! 而且也找不到最新的刚刚创建的文件呢!
- 原因:因为他是经由数据库来搜寻的,而数据库的创建默认是在每天运行一次 (每个 distribution 都不同,CentOS 5.x 是每天升级数据库一次!),所以当你新创建起来的文件, 却还在数据库升级之前搜寻该文件,那么 locate 会告诉你『找不到!』呵呵!因为必须要升级数据库呀!升级 locate 数据库的方法非常简单,直接输入『 updatedb 』就可以了! updatedb 命令会去读取 /etc/updatedb.conf 这个配置档的配置,然后再去硬盘里面进行搜寻档名的动作, 最后就升级整个数据库文件罗!因为 updatedb 会去搜寻硬盘,所以当你运行 updatedb 时,可能会等待数分钟的时间喔!
- (1)updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件;
- (2)locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字档名。
- -a:可以列出所有PATH目录下存在的文件,而不仅仅是找到的第一个文件,默认只显示找到的第一个文件。
- [[email protected] mlocate]# which find
- /bin/find
- [[email protected] mlocate]# which -a find
- /bin/find
- /usr/bin/find
- 注意:which只会搜寻可执行文件,普通文件即使在$PATH变量路径中,也是查找不到的。
最后一个范例最有趣,怎么 cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是『bash 内建的命令』啦! 但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的啊!那怎办?没关系!我们可以透过 type 这个命令喔!
- -u 建立数据库,由根目录开始
- -U 建立数据库,可以指定开始的位置
- -e 将排除在寻找的范围之外
- -f 将特定的档案系统排除在外
- -q 安静模式,不会显示任何错误讯息
- -n 至多显示n个输出
- -r 使用正规运算式 做寻找的条件
- -o 指定数据库存的名称
- -d 指定数据库的路径
- -h 显示辅助讯息
- -v 显示更多的讯息
- -V 显示程序的版本讯息
- find命令可以使用混合查找的方法
- 例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and 来把两个查找选项链接起来组合成一个混合的查找方式:
- find /tmp -size +10000000c -and -mtime +2
- -prune 不在当前指定的目录中查找
- -depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
- -mount 在查找文件时不跨越文件系统mount点
- -follow 如果find命令遇到符号链接文件,就跟踪到链接所指向的文件
-
-cpio 对匹配的文件使用cpio命令,就将这些文件备份到磁盘设备中 -amin n 查找系统中最后N分钟访问的文件
-
-empty 查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
- -false 查找系统中总是错误的文件
- -fstype type查找系统中存在于指定文件系统的文件,例如:ext2 .
本文转自:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_5.php
转载于:https://blog.51cto.com/v2v12012/975351