欢迎关注天下博客:http://blog.genesino.com/2018/03/linux-search/

查找是我们每天都在做的事情,早上醒来找下手机,出门之前查下公交,坐下之后查下资料,分析数据查下模式。

查找文件,查找信息,查找错误是应用起来更为具体的一些工作,而Linux命令行为我们提供了很多快捷强大的查找方式。

命令/可执行程序查找

whereis program_name: 会在系统默认安装目录(一般是有root权限时默认安装的软件)查找二进制文件、源码、文档中包含给定查询关键词的文件。(默认目录有 /bin, /sbin, /usr/bin, /usr/lib, /usr/local/man等类似路径)

which program_name: 会给出所有在环境变量中的程序的路径,一来方便知道运行的程序在哪,二来方便修改。比如vim `which sp_pheatmap.sh`就可以直接修改绘制热图的脚本,cp \which sp_pheatmap.sh` .`可以直接把源码拷贝到当前目录,省去了写全路径的麻烦。

如果运行which bwa,系统返回是 /usr/bin/which: no bwa in (/home/usr/bin:/bin)则说明bwa没有放置在环境变量中,不可以直接写名字调用。

普通文件快速定位 locate

locate是快速查找定位文件的好方法,但其依赖于updatedb建立的索引。而updatedb一般是每天运行一次,所以当天的新文件是索引不到的。如果有根用户权限,可以手动运行updatedb做个更新,然后再locate bwa。(个人用户也可以构建自己的updatedb, 使用locate在局部环境中查找。)

普通文件多条件查找 find

find / -name bwa可以搜索根目录下所有名字为bwa的文件

运行上面的命令时会输出很多Permission denied,是因为 作为普通用户,无权限访问一些目录,因此会有提示输出,可以使用find / -name bwa 2>/dev/null重定向标准错误到空设备,报错信息就被扔掉了,还不影响正常输出。

按时间查找

我们开发的在线画图网站 (www.ehbio.com/ImageGP),为了追踪每天用户使用时碰到了什么问题,需要每天定时去查看日志。

这个命令find . -name *.log -mmine -60可以查看当前目录下(包括所有子目录)一小时内修改的日志文件。再配合head就可以查看每个日志文件的内容,以方便查看使用过程中出现了哪些错误,如何增加提示或修改画图程序。

正是有了这个利器,前台的错误提示中才出现了这么一句话,如果您核对后数据和参数没问题,请过1天再进行尝试。若是程序问题,我们通常会在1天内修复。

当然后台数据都是用时间戳存储的,而且若无报错,数据会直接删掉,有报错的才会保留日志,不会泄露用户信息,这点大家不用担心。

现在画图网站越来越稳定,出现的问题越来越少,前台提示也越来越完善,希望大家使用时多看下提示,查看日志的频率也少了,就使用find . -name *.log -mtime -1查看从现在起24小时内的日志了。

这个也有个问题,每次查看的时间可能不一致,会漏查或有重叠,于是在某次查看完日志后,使用touch check在当前目录下新建了个空文件。以后再查日志文件时,只要使用find . -name *.log -newer check就可以获得所有上次查看过之后的新日志。每次查看完之后,都做个书签,就方便多了。

慢慢发现有空日志文件, 使用find . -name *.log -newer check -size +0过滤掉, 只保留大小大于0的文件。就这样在小伙伴聪明勤奋地维持下,我们绘图网站为3万多用户提供了近10万次服务。

近来绘图网站新增了曼哈顿图PcOA, CPcOA桑基图的绘制,近日会推出一份更新文档,欢迎使用。

按类型和大小查找

如果我想得到当前目录下所有pngjpg照片呢?

使用 find . \( -name "*.png" -o -name "*.jpg" \) | less

find . -regex ".*\(\.png|\.jpg\)$"

find . -type f -size +100G可以获取大小超过100G的文件。

限制查找深度

只看当前目录2层子目录内的文件find . -maxdepth 2 -name *.log

查看不是log结尾的文件find . -not -name *.log。还有更多组合操作,详见find文档。

按文件内容查找 grep

find可以查找包含某句话的文件吗? 还是拿我们的日志说事吧,find . -name *.log -exec grep -l 'Error' {} \;就可以返回所有包含Error单词的文件名。

find . -name *.log | xargs grep -l 'Error'也可以。

grep -rl 'Error' *也可以,不加-l还可以顺便返回匹配的行。

匹配行的前后行

grep -A 5 -B 1 'Bioinfo' ehbio.log可以查看匹配行的前1行(B, before)和后5行(A, after)。

匹配次数

grep -c 'Bioinfo' ehbio.log可以统计包含Bioinfo的行数

grep -ci 'Bioinfo' ehbio.log则会在匹配时忽略大小写。

统计FASTA序列中的序列数 grep '^>' ehbio.fa

统计FASTQ序列中的序列数 grep '^+$' ehbio.fq。(^表示以什么开头,$表示以什么结尾)。

获取未匹配行

grep -v 'Bioinfo' ehbio.log,读读手册(man grep),可以看到更多参数使用。

序列提取

假设有个基因列表文件 (ID),有个单行序列的FASTA文件 (ehbio.fa), 运行如下命令grep -A 1 -Fw -f id ehbio.fa | grep -v -- '--'就可以批量提取序列了。

-f id表示把id文件中的每一行作为一个匹配模式。-F表示匹配模式作为原始字符串,而非正则表达式,这是以防有特殊字符被解析。-w则表示作为一个单词匹配,即假如id中有Sox2,那么它会匹配Sox2,也会匹配Sox21;如果加了-w,则不会匹配Sox21

更好的序列批量提取见 awk的使用。

模式匹配

grep强大的功能是支持正则匹配,默认使用基本正则表达式,-E使用扩展的正则表达式,-P使用perl格式的正则表达式。

比如想去掉文件中所有的空行grep -v '^$' ehbio.fa >ehbio.clean.fa;

从公众号文章中搜索跟文章写作相关的文章 grep 'writ.*' *.md (可以匹配write, writing等字);

正则表达式就比较多了,具体可以看http://mp.weixin.qq.com/s/4lUiZ60-aXLilRk9–iQhA。

总结

Linux命令是生信学习的基本功,需要长时间的积累和实验。现在有个让您快速学习的方法,想不想知道呢?

生信宝典在3月24日安排了Linux培训,快速学习Linux基本命令和常用生物信息学软件。Linux学好了虽然不能立即处理转录组、ChIP-seq分析,但如果不被这些基础知识绊住脚,你可以花更多精力在解决你的生物问题上,磨刀不误砍材工。如果你要做好生信,这块是必不可少的,学得好,也会事半功倍。

请阅读原文查看更多信息。

如果你更喜欢自学或想提前了解下,请阅读下面文章。

  • Linux-总目录
  • Linux-文件和目录
  • Linux-文件操作
  • Linux文件内容操作
  • Linux-环境变量和可执行属性
  • Linux - 管道、标准输入输出
  • Linux - 命令运行监测和软件安装
  • Linux-常见错误和快捷操作
  • Linux-文件列太多,很难识别想要的信息在哪列;别焦急,看这里。
  • Linux-文件排序和FASTA文件操作
  • Linux-应用Docker安装软件
  • Linux服务器数据定期同步和备份方式
  • VIM的强大文本处理方法
  • Linux - Conda软件安装方法
  • 查看服务器配置信息
  • Linux - SED操作,awk的姊妹篇
  • Linux - 常用和不太常用的实用awk命令
  • Bash概论 - Linux系列教程补充篇

Linux下那些查找命令相关推荐

  1. linux vim 怎么查找,linux下vim 查找命令

    linux下vim 查找命令: /text --查找text, 按n查找下一个, N查找上一个 ?text --查找text(反向查找), 按n查找下一个, N查找上一个 */# --查找光标当前的单 ...

  2. Linux下的查找命令合集(which/whereis/locate/find)

    Linux 下的查找命令有很多,常用的有which.whereis.locate.find.那么这4个命令之间各自有什么特点,又有什么区别,什么时候该用哪个才最合适呢?方便我们在开发和学习中能更加有效 ...

  3. Linux下的查找命令

    man    find      locate     which    whereis    type man 学习Linux命令,就得会看帮助文档,不然选项太多,根本记不住.常用的帮助文档命令有m ...

  4. (转)linux下find查找命令用法

    1.命令格式: find pathname -options [-print -exec -ok ...] 2.命令功能: 用于在文件树种查找文件,并作出相应的处理 3.命令参数: pathname: ...

  5. Linux下文件查找命令find笔记

    在Linux命令下如果需要快速自己系统所需要处理的文件,可以通过find命令快速进行检索. 如果想在某个路径下查找相应的文件可以执行如下命令: find path -name filename # p ...

  6. 一网打进Linux下那些查找命令

    查找是我们每天都在做的事情,早上醒来找下手机,出门之前查下公交,坐下之后查下资料,分析数据查下模式. 查找文件,查找信息,查找错误是应用起来更为具体的一些工作,而Linux命令行为我们提供了很多快捷强 ...

  7. linux中vim下如何查找,linux下vim 查找命令

    Echarts 动态折线图 < ... B-tree/B+tree/B*tree [转] (原文出处:http://blog.csdn.net/hbhhww/article/details/82 ...

  8. linux将文件夹树状列出,Linux下用tree命令列出树形图

    命令用法: tree 参数: -a 显示所有文件和目录. -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合. -C 在文件和目录清单加上色彩,便于区分各种类型. -d 显示目录名称而非内容 ...

  9. Linux下python的命令,linux下python相关命令

    若本机已安装python2,尽量不要动现有的python2,额外安装python3即可. 1.安装python3.6(centos下安装python3自带pip和setuptools) # 安装依赖环 ...

最新文章

  1. 记录一下g++的编译选项
  2. 神器:REST测试工具[wiztools.org restclient]客户端Jar依赖Java安装环境
  3. 《PRML_Translation》pdf
  4. 《Python编程从入门到实践》学习笔记6:字典
  5. php通过函数怎么禁止百度蜘蛛抓取,怎么屏蔽百度蜘蛛抓取网站?
  6. HDU1161 Eddy's mistakes
  7. javascript中的cookie问题
  8. tensorflow精进之路(二十八)——人脸识别(下)(MTCNN人脸检查和人脸对齐+CASIA-WebFace数据集模型)
  9. linux下彻底卸载mysql 图解教程
  10. java url压缩_URL短地址压缩算法 微博短地址原理解析 (Java实现)
  11. php常用设计模式和算法,常用算法、问答、设计模式
  12. php 改变页面背景颜色,PHP改变背景颜色
  13. html作品实验报告,html网页制作实验报告.docx
  14. Bable的快速入门
  15. 在破败中崛起,在寂灭中复苏。   沧海成尘,雷电枯竭,那一缕幽雾又一次临近大地,世间的枷锁被打开了,一个全新的世界就此揭开神秘的一角……
  16. 和平精英清明节服务器维修时间,和平精英开服时间/和平精英几点能玩 和平精英常见问题解答汇总...
  17. 如何在 Chrome 中执行 JavaScript 代码
  18. 如何营造办公室的友好氛围
  19. att格式汇编指令_ATT汇编语法简介
  20. kali ap pojie

热门文章

  1. 作者:兰艳艳,女,中国科学院计算技术研究所副研究员、硕士生导师。
  2. 【离散数学】图的着色与对偶图
  3. 【Java】深入理解Java随机数
  4. Scrapy 爬虫框架初体验三 —— 工程优化及其完善
  5. python 3 一些常用的内置数据结构介绍
  6. 进程间通信之2----共享内存
  7. Berenson机器人艺术鉴赏家亮相切尔西画廊
  8. ArcGIS Enterprise 10.5.1 静默安装部署记录(Centos 7.2 minimal)- 2、安装WebAdapter
  9. Windows下安装python2和python3双版本
  10. Xamarin.Android开发实践(十四)