搜索是我们每天都在做的事情。我们早上起床找手机,出门前查公交车,坐下后查资料,分析数据查规律。查找文件、查找信息、查找错误是需要应用的更具体的任务,而Linux命令行为我们提供了许多快速而强大的查找方法。command/executableprogramsearchwhereisprogram_name:会在系统默认安装目录(通常是有root权限的情况下默认安装的软件)中搜索包含给定查询关键字的二进制文件、源代码和文档。(默认目录有/bin、/sbin、/usr/bin、/usr/lib、/usr/local/man等类似路径)whichprogram_name:会给出环境变量中所有程序的路径,方便一来知道运行的程序在哪里,二来方便修改。比如vim`whichsp_pheatmap.sh`可以直接修改绘制热图的脚本,cp\whichsp_pheatmap.sh`.`可以直接将源码复制到当前目录,省去了写完整路径的麻烦。如果运行whichbwa,系统返回/usr/bin/which:nobwain(/home/usr/bin:/bin),也就是说bwa没有放在环境变量中,不能通过写其直接调用姓名。普通文件快速定位locatelocate是一种快速查找定位文件的好方法,但是它依赖于updatedb建立的索引。而updatedb一般一天运行一次,所以无法索引当天的新文件。如果你有root用户权限,你可以手动运行updatedb进行更新,然后找到bwa。(个人用户也可以自己搭建updatedb,在本地环境中使用locate进行搜索。)普通文件多条件搜索findfind/-namebwa可以搜索根目录下所有名为bwa的文件运行上述命令时,很多Permissiondenied会输出,因为作为普通用户,有些目录没有权限访问,所以会有提示输出,可以使用find/-namebwa2>/dev/null将标准错误重定向到空设备,错误消息将被丢弃。影响正常输出。搜索我们按时间开发的在线绘图网站(www.ehbio.com/ImageGP)。为了跟踪用户每天遇到什么问题,需要每天定时查看日志。此命令查找.-name*.log-mmine-60可以查看当前目录(包括所有子目录)一小时内修改的日志文件。借助head,您可以查看各个日志文件的内容,方便您查看使用过程中出现了哪些错误,如何添加提示或修改绘图程序。就是因为这个利器,前台的报错信息里出现了这么一句话,如果检查后数据和参数没有问题,请过一天再试。如果有程序问题,我们通常会在1天内解决。当然,后台数据存储是有时间戳的,如果没有报错,直接删除数据。如果有报错,会保留日志,不会泄露用户信息。别担心这个。现在绘图网站越来越稳定,问题越来越少,前端提示也越来越完善。希望大家在使用的时候多看提示,少看日志的频率。使用查找。-name*.log-mtime-1查看24小时后的日志。这也有一个问题。每次检查的时间可能不一致、缺失或重叠,所以检查一次log后,使用touchcheck在当前目录下新建一个空文件。稍后检查日志文件时,只需使用find。-name*.log-newercheck以获取上次检查后的所有新日志。每次观看后做个书签就方便多了。慢慢发现有空的日志文件,使用find。-name*.log-newercheck-size+0将它们过滤掉,只保留size大于0的文件。就这样,在小伙伴们的精明和辛勤维护下,我们的绘图网站已经提供了近10万次服务超过30,000名用户。近期绘图网站新增了曼哈顿图、PcOA、CPcOA和Sankey图的绘图,近期将发布更新文档,欢迎使用。按类型和大小查找如果我想获取当前目录下所有的png和jpg图片怎么办?使用查找。\(-name"*.png"-o-name"*.jpg"\)|少还是找。-regex".*\(\.png\|\.jpg\)$"找到.-typef-size+100G可以获取大小超过100G的文件。限制搜索深度,只查看当前目录find的第2级子目录中的文件。-最大深度2-名称*.log。查看不以logfind结尾的文件。-不是-name*.log。还有更多组合操作,详见find文档。按文件内容搜索grepfind能找到包含某句话的文件吗?说说我们的日志,找到。-name*.log-execgrep-l'错误'{}\;可以返回所有包含单词Error的文件名。寻找。-名称*.log|xargsgrep-l'Error'也有效。grep-rl'Error'*也可以,不加-l,也可以顺便返回匹配的行。匹配行前后grep-A5-B1'Bioinfo'ehbio.log可以查看匹配行的第一行(B,之前)和最后5行(A,之后)。Numberofmatchesgrep-c'Bioinfo'ehbio.log可以统计包含Bioinfo的行数grep-ci'Bioinfo'ehbio.log匹配时会忽略大小写。统计FASTA序列grep'^>'ehbio.fa中的序列数统计FASTQ序列grep'^+$'ehbio.fq中的序列数。(^表示以什么开头,$表示以什么结尾)。getunmatchedlinesgrep-v'Bioinfo'ehbio.log,阅读手册(mangrep),你可以看到更多的参数使用。序列提取假设有一个基因列表文件(ID)和一个单行序列FASTA文件(ehbio.fa),运行以下命令grep-A1-Fw-fidehbio.fa|grep-v--'--'可以批量提取序列。-fid表示将id文件中的每一行作为匹配模式。-F表示匹配模式作为原始字符串使用,而不是正则表达式,这是为了防止特殊字符被解析。-w表示匹配为单词,即如果id中有Sox2,则匹配Sox2和Sox21;如果你加上-w,它将不匹配Sox21。为了更好地批量提取序列,请参阅awk用法。模式匹配grep的强大功能是支持正则匹配。默认使用基本正则表达式,-E使用扩展正则表达式,-P使用perl格式的正则表达式。例如,如果要删除文件中的所有空行,grep-v'^$'ehbio.fa>ehbio.clean.fa;从公众号articlesgrep'writ.*'*.md中搜索文章写作相关的文章(可以匹配write、writing等);正则表达式比较多,详见http://mp.weixin.qq.com/s/4lUiZ60-aXLilRk9--iQhA。
