同时在for循环中使用basename和绝对路径
Using basename and absolute path inside a for loop at the same time
假设我有
for i in `ls -1 /home/samples/*_1.fq.gz | sed 's/_1.fq.gz//'`
do
bbduk.sh -Xmx1g in1=$i\_1.fq.gz in2=$i\_2.fq.gz out1=/home/output/BASENAME\_clean_1.fq.gz out2=/home/output/BASENAME\_clean_2.fq.gz ref=/home/bbduk/bbmap/resources/adapters.fa ktrim=r k=23 mink=11 hdist=1 tpe tbo qtrim=r trimq=10 maq=10
done
我正在尝试这样做,输入(in1 和 in2)是绝对路径,它与当前代码一起使用,但输出(out1 和 out2)必须是 i[=11 的基本名称=]
这是因为我需要程序将“basename_clean_1.fq.gz”和“basename_clean_2.fq.gz”输出到与文件来源不同的目录
有什么想法吗?
使用参数扩展来操纵名称。 ${i%_1.fq.gz}
将从 $i
中删除后缀,而 ${i##*/}
会为您提供基本名称。例如:
for i in /home/samples/*_1.fq.gz; do
s="${i%_1.fq.gz}"
echo basename: "${s##*/}"
echo fullpath: "$s"
done
假设我有
for i in `ls -1 /home/samples/*_1.fq.gz | sed 's/_1.fq.gz//'`
do
bbduk.sh -Xmx1g in1=$i\_1.fq.gz in2=$i\_2.fq.gz out1=/home/output/BASENAME\_clean_1.fq.gz out2=/home/output/BASENAME\_clean_2.fq.gz ref=/home/bbduk/bbmap/resources/adapters.fa ktrim=r k=23 mink=11 hdist=1 tpe tbo qtrim=r trimq=10 maq=10
done
我正在尝试这样做,输入(in1 和 in2)是绝对路径,它与当前代码一起使用,但输出(out1 和 out2)必须是 i[=11 的基本名称=]
这是因为我需要程序将“basename_clean_1.fq.gz”和“basename_clean_2.fq.gz”输出到与文件来源不同的目录
有什么想法吗?
使用参数扩展来操纵名称。 ${i%_1.fq.gz}
将从 $i
中删除后缀,而 ${i##*/}
会为您提供基本名称。例如:
for i in /home/samples/*_1.fq.gz; do
s="${i%_1.fq.gz}"
echo basename: "${s##*/}"
echo fullpath: "$s"
done