将循环下载的文件链接到带有 bash 循环的文本列表中的标识符

Linking files downloaded in a loop, to an identifier in a text list with a bash loop

我有一个 bash 循环,它使用 python 程序循环遍历列表(文本文件)中的每个标识符,以下载基因组(文件),我想知道是否有是我可以 link 每个文件下载到列表中的 id 的一种方法,因为下载的文件的名称使得以后更难使用。

bash中的循环:

for i in $(more 'idpandas.txt'); do echo $i; ncbi-genome-download --format protein-fasta --species-taxid $i archaea,bacteria; done;

这有可能吗?

当然应该有办法。但我们需要更多信息:您正在下载的文件名称是哪些?

for i in $(<idpandas.txt)
do
    echo $i
    ncbi-genome-download --format protein-fasta --species-taxid $i archaea,bacteria
    ln -s $DOWNLOAD_NAME $i
done

顺便说一句,不要在元素的循环列表中使用"more",它是一个寻呼机,在这种情况下会给你带来问题。 link 与 "ln" 行一样简单。我打赌你的问题是知道哪个是正在生成的文件名。但这也是我们不知道的事情。

使用我的一条评论中建议的肮脏方式,您可以将所需的文件存储在具有您的 ID 的文件夹下。我不知道您的下载脚本是如何工作的,但我认为以下代码应该可以解决问题:

for i in $(<idpandas.txt)
do
    echo $i
    mkdir $i
    cd  $i
    ncbi-genome-download --format protein-fasta --species-taxid $i archaea,bacteria
    cd ..
done

这应该会为您提供一堆文件夹,这些文件夹的名称与 idpandas.txt 文件中的 ID 相同,并且在每个文件夹中,您的工具下载的文件。