gpt4 book ai didi

linux - 在循环中运行命令时更改输出文件名

转载 作者:太空狗 更新时间:2023-10-29 11:17:42 25 4
gpt4 key购买 nike

我正在使用 Tracer 软件包 ( https://github.com/Teichlab/tracer )。程序调用如下:

tracer assemble [options] <file_1> [<file_2>] <cell_name> <output_directory>

程序在单个数据集上运行,输出转到 /<output_directory>/<cell_name>

我现在要做的是在多个文件上运行这个程序。为此,这就是我所做的:

for filename in /home/tobias/tracer/datasets/test/*.fastq
do
echo "Processing $filename file..."
python tracer assemble --single_end --fragment_length 62 --fragment_sd 1 $filename Tcell_test output;
done

这在原则上是有效的,但作为 cell_name是静态的,每次迭代都会覆盖前一次迭代的输出。我需要如何更改我的脚本才能为输出文件夹提供输入文件的名称?

例如:输入文件名是tcell1.fastq .对于这个 cell_name 应该是 tcell1 .下一个文件是 tcell2.fastq cell_name 应该是 tcell2 , 等等...

最佳答案

如果我理解正确的话,我认为这可以在 bash 中实现 -

for filename in /home/tobias/tracer/datasets/test/*.fastq
do
echo "Processing $filename file..."
basefilename="${filename##*/}" #<---
python tracer assemble --single_end --fragment_length 62 --fragment_sd 1 "$filename" "${basefilename%.fastq}" output;
# ^^^^^^^^^^^^^^^^^^^^^^^^
done

${filename##*/> 删除直到最后一个 / 的部分,${basefilename%.fastq} 删除.fastq 最后。

关于linux - 在循环中运行命令时更改输出文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39899312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com