Bash - 通过更改文件名变量

时间:2016-05-31 13:56:30

标签: bash filenames

我想以.txt格式保存多个grep的结果。我做了

for i in GO_*.txt; do
    grep -o "GO:\w*" ${i} | grep -f - ../PFAM2GO.txt > ${i}_PFAM+GO.txt
done

显然,最终文件名也包含原始文件扩展名,即GO_*.txt_PFAM+GO.txt。 现在,我想只有GO_*_PFAM+GO.txt。有没有办法修改${i}以取消.txt而无需事后执行renamemv

注意: *部分的长度可变。

1 个答案:

答案 0 :(得分:2)

您可以使用parameter expansion从文件名中删除扩展程序:

for i in GO_*.txt; do
    name="${i%.txt}"
    grep -o "GO:\w*" "${i}" | grep -f - ../PFAM2GO.txt > "${name}_PFAM+GO.txt"
done