我正在尝试从bash
中的文件中删除特定字符,但未获得所需的结果。
bash
for file in /home/cmccabe/Desktop/NGS/API/test/*.vcf.gz; do
mv -- "$file" "${file%%/*_variants_}.vcf.gz"
done
文件名
TSVC_variants_IonXpress_004.vcf.gz
期望的结果
IonXpress_004.vcf.gz
当前结果(在文件名重复中延伸)
TSVC_variants_IonXpress_004.vcf.gz.vcf.gz
我试图将*
移到最后并使用/_variants_/
并获得相同的结果。谢谢你:)。
答案 0 :(得分:4)
${var%%*foo}
从foo
的值末尾删除以var
结尾的字符串。如果没有匹配的后缀,则不会删除任何内容。我猜你希望${var##*foo}
从头开始修剪,直到foo
。如果你删除目录路径,你必须单独添加目录路径。
mv -- "$file" "/home/cmccabe/Desktop/NGS/API/test/${file##*_variants_}"
答案 1 :(得分:1)
find . -type f -name "*.vcf.gz" -exec bash -c 'var="$1";mv $var ${var/TSVC_variants_/}' _ {} \;
可能会为你完成这项工作。