Linux培训
达内IT学院

400-996-5531

Linux系统下都有哪些查找命令


今天小编要跟大家分享的文章是关于Linux系统下都有哪些查找命令?查找文件,查找信息,查找错误是应用起来更为具体的一些工作,而Linux命令行为我们提供了很多快捷强大的查找方式。下面我们一起来看一看吧!

Linux系统下都有哪些查找命令

一、命令/可执行程序查找

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

which program_name: 会给出所有在环境变量中的程序的路径,一来方便知道运行的程序在哪,二来方便修改。(PATH和path,傻傻分不清)

比如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重定向标准错误到空设备,报错信息就被扔掉了,还不影响正常输出。

按时间查找

在线画图网站 (#/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的文件。就这样在小伙伴聪明勤奋地维持下,绘图网站2年间为大家提供了近30万次服务。

按类型和大小查找

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

使用 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等字);

以上就是小编今天为大家分享的关于Linux系统下都有哪些查找命令的文章,希望本篇文章能够对正在从事Linux运维工作的小伙伴们有所帮助。想要了解更多Linux相关知识记得关注达内Linux培训官网。最后祝愿小伙伴们工作顺利,成为一名优秀的Linux运维工程师!

文章来源于生信宝典 ,作者CT

【免责声明:本文图片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。】

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Linux运维要知道的Linux常用命令解析
下一篇:运维工程师想发展要掌握的技能有哪些

运维培训班出来好找活吗?

新能源运维工程师是干什么的

云计算就业岗位有哪些?

学物联网工程好就业吗?

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省