查找是我们每天都在做的事情,早上醒来找下手机,出门之前查下公交,坐下之后查下资料,分析数据查下模式。
查找文件,查找信息,查找错误是应用起来更为具体的一些工作,而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/bwa
。whereis
查找的是固定的几个路径。
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: 如果我想得到当前目录下所有png
和jpg
照片呢?
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