【问题标题】:Bash - change the filename by changing the filename variableBash - 通过更改文件名变量来更改文件名
【发布时间】:2016-05-31 13:56:30
【问题描述】:

我想以 .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

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

【问题讨论】:

    标签: bash filenames


    【解决方案1】:

    您可以使用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
    

    【讨论】:

    • 谢谢,这成功了!您分享的链接也非常有用。
    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 2014-07-23
    • 1970-01-01
    • 2014-06-25
    • 2021-12-27
    • 2017-06-29
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多