我有这个脚本,我想在其中添加一行,在串联后,安全地删除 *.dump 文件,因为它们很大,而且我没有空间用于串联文件和转储文件。jelly 是一个 txt 文件,其中包含一行一行的基因组 ID 列表,如下所示:
GCA....
GCA....and so on.
我有一堆转储文件名,以基因组 id 命名,有两列:例如。GCA...1.dump 就像:
A 57575757
C 6656565..
前任。GCA...2.dump 就像:
AA 6565656
AT 6565656...
所以我有每个基因组 ID 的 14 个转储文件(1-14 ngrams)。因此,我想为每个基因组 ID 连接所有 1-14,然后删除基于 jelly 文件的使用过的转储文件。最后,我只需要在创建的新目录中有一个名为 *.counts 的文件。
#! usr/bin/env bash
dir_in=$1 # Jelly_count
super=$2 # Archaea/Bacteria
group=$3 # Asgard_group/Pseudomonadota
sub=$4 # Aquificota
dir_out=Counts/"${super}"/"${group}"/"${sub}"/CHR
if [ ! -d "${dir_out}" ]; then
mkdir -p "${dir_out}"
fi
# read the ids in jelly file
for id in $(cat "${dir_in}"/"${super}"/"${group}"/"${sub}"/jelly);
do
echo "Concatenating files from genome ${id}"
# make a loop from 1 to 14 or any other range I need
for i in $(seq $5 $6);
do
# concatenate all 14 tsv files in one
csvtk concat "${dir_in}"/"${super}"/"${group}"/"${sub}"/CHR/"${id}"_"${i}".dump >> "${dir_out}"/"${id}"_chr_kmer.counts
# then delete all the 14 dump files
# MAYBE ?????
**find "${dir_in}"/"${super}"/"${group}"/"${sub}". -name '*.dump' -delete**
done
done
我尝试过rm,但还有更好的方法吗?
谢谢你们。
保罗
我猜原来的应该是这样运行的
可能首选项是
cat "$ff" >> "$F" && rm "$ff"
我首先设置ff
为文件名的位置。我会尝试以下方法。我希望那里没有太多/任何拼写错误。
这将再次运行,就像
(稍后可以去掉
echo -n
和wc
行,行加上echo
+read
。这里的wc
意思是字数,wc -l
实际上是行数。)