本周给大家分享几个超级实用的命令,喜欢记得分享哦!
一、 Linux 系统巧用 rsync 拷贝数据
还在用 scp 拷贝数据么?换 rsync 吧!rsync 是一个远程数据同步工具,可以实现 scp 的功能,但远比 scp 更强大。使用 scp 拷贝数据,每次都是把文件全部复制过去 (无论相同的文件是否存在),而 rsync 第一次执行是把所有文件同步过去,再次执行时,只把修改过的文件再同步一次。rsync 的强大之处还在于,可以使用通配符来决定是否拷贝某些文件,如:
rsync -rav -e ssh --exclude='00.*' ./* usrname@host:/your/path/
rsync -rav -e ssh --include='01.*' ./* usrname@host:/your/path/
可以使用 --exclude 来排除自己不想复制的文件,使用 --include 仅拷贝自己需要的文件;
这个命令远比想象中的强大,我只开发了我常用的部分,大家可以多尝试。
二、Linux 系统拷贝文件保留文件目录结构
每个 Linux 命令都有很多可选的参数,可以用 command --help 的形式查看,有些参数可以帮助我们完成很复杂的任务。例如:拷贝文件的时候如果想保留文件的目录结构,添加 --parent 参数即可。
cp -r --parent ./*/00.raw_data ./test1/
原始文件夹和拷贝后的文件夹的目录结构如下:
这里只是举个简单的例子,善用 --help 可以大大加快工作效率。
三、批量生成 md5 的值
有时候我们需要生成某个文件夹下所有文件或者某些文件的 md5 的值,而 md5sum 命令默认只对单文件操作,这时候可以使用 find 和 xargs 命令来实现。
find ./ -type f -name "*.bam" | xargs md5sum > check.md5
find ./ -type f -name "*" | xargs md5sum > check.md5
第一个命令会生成当前文件夹以及所有子文件夹下 bam 文件的 md5 值;
第二个命令会生成当前文件夹以及所有子文件夹下所有文件的 md5 值。
四、巧用 column 命令查看 tab 分割文本
对于某些 tab (或者逗号) 分割的文本,使用 less -S 查看实在是烧脑。使用 column 命令,可以使 tab (或其它分割,如逗号) 分割文本更直观,更易懂!
column -t test.gff3 | less -S
column -s , -t data.txt | less -S
-t 参数是创建表格,易于阅读;
-s 参数可以指定分隔符,将文本分割。
下面是直接使用 less -S 查看 gff 文件和先用 column -t 处理再用 less -S 查看的对比:
接着是使用 less -S 查看逗号分割 csv 文件和先用 column -t 处理再用 less -S 查看的对比:
五、R 中多行文本变一行
在 PDF 等带有格式的文件中复制文本,粘贴到 Word 中总是带有换行符,手动删除非常麻烦,使用下面的命令可以完美解决这个问题。