Bash - изменить имя файла, изменив переменную имени файла
Я хочу сохранить результаты нескольких grep в формате.txt. я делаю
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
без необходимости выполнять rename
или mv
после этого?
Примечание: *
часть имеет переменную длину.
1 ответ
Решение
Вы можете использовать расширение параметра, чтобы удалить расширение из имени файла:
for i in GO_*.txt; do
name="${i%.txt}"
grep -o "GO:\w*" "${i}" | grep -f - ../PFAM2GO.txt > "${name}_PFAM+GO.txt"
done