生信人

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

279

主题
发表于 2022-7-1 19:25:36 | 查看: 642| 回复: 0
本帖最后由 生信喵 于 2022-7-1 19:37 编辑

一、locate
       locate 命令用于按照名称快速搜索文件所对应的位置,语法格式为“locate 文件名称”。使用 find 命令进行全盘搜索虽然更准确,但是效率有点低。如果仅仅是想找一些常见的且又知道大概名称的文件,不如试试 locate 命令。在使用 locate 命令时,先使用 updatedb 命令(需要 root 权限)生成一个索引库文件,这个库文件的名字是/var/lib/mlocate/mlocate.db,
       后续在使用 locate 命令搜索文件时就是在该库中进行查找操作,速度会快很多。
       第一次使用 locate 命令之前,记得先执行 updatedb 命令来生成索引数据库,然后再进行查找:
  1. #更新 locate 数据库
  2. updatedb
  3. #显示 locate 数据库
  4. ls -l /var/lib/mlocate/mlocate.db
复制代码
  1. #查找文件名
  2. locate SRX5299464
  3. #使用正则表达式
  4. locate -r "samtools[        DISCUZ_CODE_1        ]quot;
复制代码

二、whereis 命令
       whereis 命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置,语法格式为“whereis 命令名称”。
       简单来说,whereis 命令也是基于 updatedb 命令所生成的索引库文件进行搜索,它与 locate命令的区别是不关心那些相同名称的文件,仅仅是快速找到对应的命令文件及其帮助文件所在的位置。
  1. #whereis 搜索路径
  2. whereis -l #查找程序文件
  3. whereis less
  4. whereis -b less
复制代码

三、which 命令
       which 命令用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法格式为“which命令名称”。
       which 命令是在 PATH 变量所指定的路径中,按照指定条件搜索命令所在的路径。也就是说,如果我们既不关心同名文件(find 与 locate),也不关心命令所对应的源代码和帮助文件(whereis),仅仅是想找到命令本身所在的路径。下面查找一下 locate 和 whereis 命令所对应的路径:
  1. #查找软件
  2. which locate

  3. #显示全部内容
  4. 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. #1 搜索目录下以点 fna 结尾的文件;
  2. find ~/ -name *.fna
  3. #2 搜索系统中最近 5 分钟内编辑过的文件;
  4. find / -amin 5
复制代码
      find 中可以根据各种时间选项进行搜索,以”天”为单位:有-atime [+|-],-mtime,-ctime以“分钟”为单位,包括-amin,-mmin,-cmin 下图中列出了有关时间的一些参数。
  1. #3 查找大于100M的文件
  2. find ./ -size 100M
  3. 查找到列出来
  4. find ./ -size 100M -exec ls {} \;
  5. 查找到直接删除
  6. find ./ -size 100M -exec rm -rf {} \;

  7. #4 按照文件类型搜索;
  8. find  ./ -type d ;文件类型 #c :档案,d: 目录,b: 区块装置档案 ,p: 具名贮列,f: 一般档案,l: 符号连结,s: socket

  9. #5 查找完进行筛选
  10. find /share/data/  -name "*.sh" | grep "[0-9]-.*"
  11. 查找到直接拷贝到当前目录
  12. find /share/data/  -name "[0-9]*.sh" -xc cp {} ./ \;

  13. #6 正则表达式筛选
  14. find ~/ -name "[A-Z]*"        #查以大写字母开头的文件
  15. find  /etc -name  "host*"     #查以host开头的文件
  16. find  ~/ -name "[a-z][a-z][0-9][0-9].fa"  #查以两个小写字母和两个数字开头的fa文件

  17. #7 限制目录层次
  18. find  ~ -maxdepth 4 -name *.fna   #查时深度最多为4层
  19. find  ~ -mindepth 3 -name *.fna   #查时深度最少为3层

  20. #8 搜索文件,直接处理
  21. find . -type f -exec ls -l {} \; #一定要加分号

  22. #9 查找并拷贝
  23. mkdir fna
  24. find  ~ -maxdepth 3 -name  "*.fna" | xargs -I {}  cp {} ./fna

  25. #10 查找并删除
  26. find ./fna -name *.fna
  27. find ./fna -name *.fna -ok rm '{}' \;
  28. find ./fna -name *.fna -exec rm '{}' \;

  29. #搜索当前目录下所有一点fna结尾的文件,然后删除掉。
  30. find ./fna  -name *.fna | xargs rm
复制代码

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|小黑屋|生信人

GMT+8, 2024-5-2 22:25 , Processed in 0.044287 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表