|
发表于 2022-7-1 19:25:36
|
查看: 1146 |
回复: 0
本帖最后由 生信喵 于 2022-7-1 19:37 编辑
一、locate
locate 命令用于按照名称快速搜索文件所对应的位置,语法格式为“locate 文件名称”。使用 find 命令进行全盘搜索虽然更准确,但是效率有点低。如果仅仅是想找一些常见的且又知道大概名称的文件,不如试试 locate 命令。在使用 locate 命令时,先使用 updatedb 命令(需要 root 权限)生成一个索引库文件,这个库文件的名字是/var/lib/mlocate/mlocate.db,
后续在使用 locate 命令搜索文件时就是在该库中进行查找操作,速度会快很多。
第一次使用 locate 命令之前,记得先执行 updatedb 命令来生成索引数据库,然后再进行查找:
- #更新 locate 数据库
- updatedb
- #显示 locate 数据库
- ls -l /var/lib/mlocate/mlocate.db
复制代码- #查找文件名
- locate SRX5299464
- #使用正则表达式
- locate -r "samtools[ DISCUZ_CODE_1 ]quot;
复制代码
二、whereis 命令
whereis 命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置,语法格式为“whereis 命令名称”。
简单来说,whereis 命令也是基于 updatedb 命令所生成的索引库文件进行搜索,它与 locate命令的区别是不关心那些相同名称的文件,仅仅是快速找到对应的命令文件及其帮助文件所在的位置。
- #whereis 搜索路径
- whereis -l #查找程序文件
- whereis less
- whereis -b less
复制代码
三、which 命令
which 命令用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法格式为“which命令名称”。
which 命令是在 PATH 变量所指定的路径中,按照指定条件搜索命令所在的路径。也就是说,如果我们既不关心同名文件(find 与 locate),也不关心命令所对应的源代码和帮助文件(whereis),仅仅是想找到命令本身所在的路径。下面查找一下 locate 和 whereis 命令所对应的路径:
- #查找软件
- which locate
- #显示全部内容
- whereis locate
复制代码
四、find
find 命令用于按照指定条件来查找文件所对应的位置,语法格式为“find [查找范围] 寻找条件”。当系统中的文件很多时,忘记文件名和文件位置就可以使用 find 命令,find 命令提供了几乎全部条件的检索方式。例如根据文件大小,文件类型,文件日期等。例如想要找到一年之前超过 1G 的文件,然后删除掉,就可以使用 find 命令来完成。
参数 | 作用 | -name | 匹配名称 | -perm | 匹配权限(mode 为完全匹配,-mode 为包含即可) | -user | 匹配所有者 | -group | 匹配所有组 | -mtime -n +n | 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前) | -atime -n +n | 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天以前) | -ctime -n +n | 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前) | -nouser | 匹配无所有者的文件 | -nogroup | 匹配无所有组的文件 | -newer f1 !f2 | 匹配比文件 f1 新但比 f2 旧的文件 | -type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) | -size | 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB 的文件) | -prune | 忽略某个目录 | -exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) | find 命令中的参数以及作用
- #1 搜索目录下以点 fna 结尾的文件;
- find ~/ -name *.fna
- #2 搜索系统中最近 5 分钟内编辑过的文件;
- find / -amin 5
复制代码 find 中可以根据各种时间选项进行搜索,以”天”为单位:有-atime [+|-],-mtime,-ctime以“分钟”为单位,包括-amin,-mmin,-cmin 下图中列出了有关时间的一些参数。
- #3 查找大于100M的文件
- find ./ -size 100M
- 查找到列出来
- find ./ -size 100M -exec ls {} \;
- 查找到直接删除
- find ./ -size 100M -exec rm -rf {} \;
- #4 按照文件类型搜索;
- find ./ -type d ;文件类型 #c :档案,d: 目录,b: 区块装置档案 ,p: 具名贮列,f: 一般档案,l: 符号连结,s: socket
- #5 查找完进行筛选
- find /share/data/ -name "*.sh" | grep "[0-9]-.*"
- 查找到直接拷贝到当前目录
- find /share/data/ -name "[0-9]*.sh" -xc cp {} ./ \;
- #6 正则表达式筛选
- find ~/ -name "[A-Z]*" #查以大写字母开头的文件
- find /etc -name "host*" #查以host开头的文件
- find ~/ -name "[a-z][a-z][0-9][0-9].fa" #查以两个小写字母和两个数字开头的fa文件
- #7 限制目录层次
- find ~ -maxdepth 4 -name *.fna #查时深度最多为4层
- find ~ -mindepth 3 -name *.fna #查时深度最少为3层
- #8 搜索文件,直接处理
- find . -type f -exec ls -l {} \; #一定要加分号
- #9 查找并拷贝
- mkdir fna
- find ~ -maxdepth 3 -name "*.fna" | xargs -I {} cp {} ./fna
- #10 查找并删除
- find ./fna -name *.fna
- find ./fna -name *.fna -ok rm '{}' \;
- find ./fna -name *.fna -exec rm '{}' \;
- #搜索当前目录下所有一点fna结尾的文件,然后删除掉。
- find ./fna -name *.fna | xargs rm
复制代码
|
|