Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在for循环中同时使用basename和绝对路径_Linux_For Loop_Absolute Path_Basename - Fatal编程技术网

Linux 在for循环中同时使用basename和绝对路径

Linux 在for循环中同时使用basename和绝对路径,linux,for-loop,absolute-path,basename,Linux,For Loop,Absolute Path,Basename,假设我有 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 ktri

假设我有

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的基本名称

这是因为我需要程序将“basename_clean_1.fq.gz”和“basename_clean_2.fq.gz”输出到与文件源不同的目录


有什么想法吗?

使用参数展开操作名称
${i%\u 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

使用参数展开操作名称
${i%\u 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