首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过匹配文本文件bash中的键值来重命名文件

通过匹配文本文件bash中的键值来重命名文件
EN

Stack Overflow用户
提问于 2022-10-01 03:37:05
回答 1查看 43关注 0票数 0

我在目录中有以下文件:

代码语言:javascript
复制
./PBMCs/SRR1_1.fastq
./PBMCs/SRR1_2.fastq
./Monos/SRR2.fastq
./Monos/SRR3.fastq

我想根据键值对的文件将SRR#更改为信息更丰富的名称:

代码语言:javascript
复制
SRR1 pbmc-1
SRR2 mono-1
SRR3 mono-2

并将文件重命名为:

代码语言:javascript
复制
./PBMCs/pbmc-1_1.fastq
./PBMCs/pbmc-1_2.fastq
./Monos/mono-1.fastq
./Monos/mono-2.fastq

我所能做的就是循环遍历原始文件的列表,然后循环遍历名称Change.txt文件的行并替换字符串。但是,我不知道如何实现这个,或者它是否是一个很好的方法来处理这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-01 04:02:02

假设所有*.fastq都有一个子目录深度,这应该可以正常工作:

代码语言:javascript
复制
while read old new; do
  for fastq in ./*/"$old"*.fastq; do
    new_name=$new${fastq##*/"$old"}
    echo mv "$fastq" "${fastq%/*}/$new_name"
  done
done <name-change.txt

如果输出看起来不错,请删除echo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73915635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档