Bash-通过更改filename变量来更改文件名
我想以.txt格式保存多个grep的结果。我知道Bash-通过更改filename变量来更改文件名,bash,filenames,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.\u PFAM+GO.txt。 现在,我只想要GO.*\PFAM+GO.txt。是否有办法修改${i}以取消.txt,而无需执行重命名或mv 注意:部分具有可变长度。您可以使用从
for i in GO_*.txt; do
grep -o "GO:\w*" ${i} | grep -f - ../PFAM2GO.txt > ${i}_PFAM+GO.txt
done
问题是,显然,最终文件名也包含原始文件扩展名,即GO.*.txt.\u PFAM+GO.txt
。
现在,我只想要GO.*\PFAM+GO.txt
。是否有办法修改${i}
以取消.txt
,而无需执行重命名
或mv
注意:部分具有可变长度。您可以使用从文件名中删除扩展名:
for i in GO_*.txt; do
name="${i%.txt}"
grep -o "GO:\w*" "${i}" | grep -f - ../PFAM2GO.txt > "${name}_PFAM+GO.txt"
done
谢谢,这就成功了!你分享的链接也非常有用。