同学,这个cat指令主要是占用内存和OI,和存储关系不大吧。
老师我在做泛基因家族分析里面的泛基因列表构建,cd 03.jcvi-pan-vs-genome
cat ../01.jcvi/pangene_filter.*.last | grep -v "^#" > last.txt 这一步,由于我的基因组较多,买的云服务器磁盘空间不够,无法运行这一步,就改为find ../01.jcvi -name "pangene_filter.*.last" -print0 | while IFS= read -r -d '' file; do
output_file="${file%.last}.processed.txt"
awk '!/^#/' "$file" > "$output_file"
done
想着一条一条运行并生成各自的processed.txt文件,最后合并成last.txt, 但发现我的这个非常慢,第一个基因组 就运行了二十多个小时,现在还没结束,能帮忙修改命令吗?
不需要执行这么复杂的操作,“cat ../01.jcvi/pangene_filter.*.last | grep -v "^#" > last.txt”,这一步是为了合并所有的比对文件并且删除掉"#"开头得行,主要是为了下一步去执行python的脚本。那你不合并,直接从原来的last文件里面删除 "#"开头的行,然后执行python的脚本就可以了。
for i in `find ../01.jcvi -name "pangene_filter.*.last"`;do
name=`basename ${i} | cut -d "." -f2`;
grep -v "^#" ${i} > ${name}.last;
python3 $script/find_1vs1_v2.py ${name}.last ${name}.txt && rm ${name}.last;
done
做完这一步之后,如果没有问题,你可以把前面的pangene_filter.*.last也删了,在03文件夹里面继续执行这样的步骤:
cat *.txt > last.txt
python3 $script/find_1vs1_v2.py last.txt 1vs1.txt