- 文件搜索的常用命令有:which、whereis、find、locate。
可执行文件的搜索
在Linux系统中,不同的指令对应的指令文件放在不同的目录里。
• which <指令>
显示一个指令的完整路径与别名
• whereis <指令>
搜索一个指令的完整路径以及其帮助文件
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...] 文件
选项与参数:
-b 只查找二进制文件
-B<目录> 只在指定目录下查找二进制文件
-f 不显示文件名前的路径名称
-m 只查找man文件。
-M<目录> 只在指定目录下查找man文件
-s 只查找源代码文件
-S<目录> 只在指定目录下查找原始代码文件
-u 查找不包含指定类型的文件
locate搜索
在Linux系统中存在一个数据库,在这个数据库中保存了系统中所有文件的绝对路径。用户就可以使用下面的命令来查询文件的完整路径
• 语法:locate [关键字]
• 这个指令会将文件名或目录名中包含有此关键字的路径全部显示出来
• 用户刚创建的文件系统不会立即加入数据库中,用户可以通过updatedb指令来手动的更新这个数据库,一般需要系统重启两三次之后才能locate到,刚追加的文件/文件夹搜不到
locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找符合查找条件的文档或目录
语法:
locate [-d ][--help][--version] 文件
选项与参数:
-d或--database= 用来指定locate指令使用的数据库。locate指令默认数据库位于/var/lib/slocate目录里,文档名为slocate.db。
--help 查看帮助
--version 显示版本信息
Find查询的描述
find是一个相当重要的查询文件绝对路径的指令
• 语法:find <路径> <选项> [表达式]
find查找文件的特点:
• 从指定路径下递归向下搜索文件
• 支持按照各种条件方式搜索。 比如按照文件的所有者,所属组等
• 支持对搜索得到的文件再进一步的使用指令操作(例如:删除、统计大小、 复制等)
重要选项:
• -name 根据文件名寻找文件
例:find / -name "*tong" 以任意开头,以tong结尾的
例:find / -name "tong*"以tong开头,以任意结尾的
例:find / -name "tong"名字为tong的
例:find / -name "*tong*" 包含tong的
- 将当前目录及其子目录下所有目录列出
find . -type d
- 查找当前目录下20分钟内被访问过的文件或目录:
find . -amin -20
- 查找当前目录下大于10k的普通文件,并列出其详细信息
find . -size +10k -type f
• -user 根据文件拥有者寻找文件
• -group 根据文件所属组寻找文件
• -perm 根据文件权限寻找文件
• -size 根据文件大小寻找文件[±Sizek] +1M为大于1M的
• -type 根据文件类型寻找文件,常见类型有: f(普通文件) 、c(字符设备文件)、b(块设备文件)、l(连接文件)、d(目录)
find -type f
find -type c
find -type b
find -type l
find -type d
• -o 表达式或
• -and 表达式与
• -not 表达式非
-
对查找到的文件进一步操作
• 语法:find [路径] [参数] [表达式] -exec 指令 {} \;
• {}代表find找到的文件,即哪儿需要它就放在哪儿
• \ 转意
• ;表示本行指令结束
• 例:find /etc –name “host*” –exec du –h {} ; 查找/etc文件夹下名字以host开头的文件并显示文件的大小
搜索./下大于1000k的普通文件类型文件,输出结果到test0.txt
选项与参数:
-print:列出结果,使用find命令,默认执行
-mtime n:文件修改时间,对文件数据的最近一次修改是在 n24 小时之前
-mmin n:对文件数据的最近一次修改是在 n 分钟之前
-ctime n:文件状修改时间,对文件状态的最近一次修改是在 n24 小时之前。
-cmin n:件状态修改,对文件状态的最近一次修改是在 n 分钟之前。
-atime n:访问时间,对文件的最近一次访问是在 n*24 小时之前。
-amin n:最后访问时间,对文件的最近一次访问是在 n 分钟之前。
-mtime : 指定时间曾被改动过的文件,意思是文件內容被更改过
-ctime : 指定时间曾被更改过的文件,意思是文件权限被更改过
-atime : 指定时间曾被存取过的文件,意思是文件被读取过
-newer file:file为已存在的文件,意为列出比file时间更新的文件
-type:指定文件类型
-uid n:指定文件属主uid
-gid n:指定文件属组gid
-user:指定文件属主名
-group :指定文件属组名
-nouser: 查找系统中没有属主的文件
-nogroup:查找系统中没有属组的文件
-name:查找文件名相匹配的文件
-size:查找匹配大小的文件
-exec COMMAND:查找后使用额外命令处理查找结果
-perm +mode | –mode:+为囊括所有元素,-为包含任一元素
xargs