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

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

当有人把要查找的东西扔到群里后,看看群友们的反应吧。

(模仿微信群聊天界面,每个人不同头像,可以用我们绘图网站图标做头像,回答者的名字也可以用绘图网站每个图的名字,中英文都可,或者其它好的方面)

Q: 我安装了个软件,大家能告诉我装哪了吗?

A1: 装了啥?

A2: 在哪装的?

A3: 怎么装的?

A4: 来逗我们的吗?

A5: 我就默默地看你们猜

Q: 有没有人知道,新手,能帮帮吗?

A6: 建议看下如何提问(http://mp.weixin.qq.com/s/xCif04bqZB14Z4OvesK0SQ转成二维码,不保留链接,图上也点不了)

3分钟后

Q:我在Linux下用Conda安装了BWA,请问安装到什么地方了?

A1:试试 whereis bwa, 在我电脑上返回/usr/bin/bwa

Q: 我这输出结果是bwa:

A2: 试试 which bwa,我这返回/ehbio/bin/bwawhereis查找的是固定的几个路径。

Q: 也不可以,输出是/usr/bin/which: no bwa in (/home/ct/bin:/bin)

A2: 如果你的可执行程序在环境变量中, which可以找到。如果不在,就得用find了。

A1: 可以看看这篇conda的介绍,顺藤摸瓜去查找。http://mp.weixin.qq.com/s/A4_j8ZbyprMr1TT_wgisQQ

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

A4: 运行上面的命令时会输出很多Permission denied,怎么办?

A3: 作为普通用户,无权限访问一些目录,因此会有提示输出,可以使用find / -name bwa 2>/dev/null重定向标准错误到空设备,报错信息就被扔掉了,还不影响正常输出

A5: find在全局下搜索还是挺慢的,可以试试locate bwa

A6: locate是快速查找定位文件的好方法,但其依赖于updatedb建立的索引。而updatedb一般是每天运行一次,所以今天的新文件估计是索引不到的,可以手动运行updatedb做个更新,然后再locate bwa

Q: 谢谢大家,问题解决了。Linux下还有这么多查找命令呢。

A1:find的功能可强大了,还能做很多事呢。

A1: 我们开发的在线画图网站 (www.ehbio.com/ImageGP),为了追踪每天用户使用时碰到了什么问题,需要每天定时去查看日志。这个命令find . -name *.log -mmine -60可以查看当前目录下(包括所有子目录)一小时内修改的日志文件。再配合head就可以查看每个日志文件的内容,以方便查看使用过程中出现了哪些错误,如何增加提示或修改画图程序。正事有了这个利器,我们在在前台的错误提示中才出现了这么一句话,如果您核对后数据和参数没问题,请过1天再试一次。若是程序问题,我们通常会在1天内修复。当然后台数据都是用时间戳存储的,不会泄露用户信息,这点大家不同担心。

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

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

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

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

A2: find . \( -name "*.png" -o -name "*.jpg" \) | less

A3:

提取FASTA序列 提取FASTA序列指定区域

find, which , whereis, locate

tree convert label:@- /home/avi/tree.png

find -size +100M

grep ‘content’ file

grep -A 3 -B 3 -i

grep -r

grep -l

egrep

fgrep

split

find ~ -empty

Linux下那些批量处理

Linux下那些查找工具

killall

$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

When you want to search an executable from a path other than the whereis default path, you can use -B option and give path as argument to it. This searches for the executable lsmk in the /tmp directory, and displays it, if it is available.

$ whereis -u -B /tmp -f lsmk lsmk: /tmp/lsmk

Copy all images to external hard-drive

ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

Search all jpg images in the system and archive it.

find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

Download all the URLs mentioned in the url-list.txt file

cat url-list.txt | xargs wget –c

大文件处理

找差别 diff patch