我的目录中有数百个文件具有相同的后缀和独特的字母数字前缀,如下所示:
ABC01234.sorted_dup.bam
ABC04271.sorted_dup.bam
ABC09287.sorted_dup.bam
我有一个文件,其中一列包含新的唯一字母数字前缀,特定于每个原始前缀,如下所示:
GBH03987 ABC01234
GBH05430 ABC04271
GBH07651 ABC09287
我想用文件中的正确前缀替换原始前缀,即将目录中文件名中的前缀替换为第 1 列中的前缀。生成的文件名将具有基于第 1 列的前缀,如下所示:
GBH03987.sorted_dup.bam
GBH05430.sorted_dup.bam
GBH07651.sorted_dup.bam
对于 UNIX 新手来说,最简单的解决方案是什么?最好使用 awk 或 sed 解决方案,我们将非常感激。
答案1
对于这种情况,一个简单的 shell 循环就足够了:
while read -r new old; do
[ -f "$old.sorted_dup.bam" ] && echo mv -- "$old.sorted_dup.bam" "$new.sorted_dup.bam"
done < filenames
其中filenames
是包含映射的文件的名称。测试后删除echo
。