通过使用文本文件中的前缀来重命名文件

保罗

我有一组名为

sample_exp_A1_A01
sample_exp_A2_A02
sample_exp_A3_A03
sample_exp_A4_A04
sample_exp_A5_A05

我有一个具有以下值的文本文件

A01 170
A02 186
A03 165
A04 130
A05 120

我想根据文本文件值重命名文件,例如

FS_170_sample_exp_A1_A01
FS_186_sample_exp_A2_A02
FS_165_sample_exp_A3_A03
FS_130_sample_exp_A4_A04
FS_120_sample_exp_A5_A05

因此,根据A01A02A03匹配文本文件中的ID,A04然后将相应的数字作为前缀添加到文件名中。此外,还应在所有文件名前添加一个前缀,FS如上所示。

我手动尝试执行此操作,但这种方式一次只能处理一个文件

rename 's/^/FS_170_/' *A01 

要得到

FS_170_sample_exp_A1_A01
本杰明W.

假设您的后缀在名为的文件中suffix,则可以执行以下操作:

for fname in sample*; do
    echo mv "$fname" FS_"$(awk -v pf="${fname##*_}" \
        '$1 == pf {print $2}' suffix)"_"$fname"
done

它遍历您的所有文件;在循环中,它通过在前面加上新的文件名FS_并输出

awk -v pf="${fname##*_}" '$1 == pf {print $2}' suffix

这会将输入文件名的最后一部分分配给awk变量pf,然后对于suffix第一个字段与该变量匹配的,输出第二个字段。

另外,如果您有一个支持Perl兼容正则表达式的grep,则可以grep -Po "${fname##*_} \K.*" suffix改用(使用可变大小的后向标记\K):

for fname in sample*; do
    echo mv "$fname" FS_"$(grep -Po "${fname##*_} \K.*" suffix)"_"$fname"
done

这将添加到新的文件名,其余的新名称是完整的旧名称。

对于您的输入文件,这将导致

mv sample_exp_A1_A01 FS_170_sample_exp_A1_A01
mv sample_exp_A2_A02 FS_186_sample_exp_A2_A02
mv sample_exp_A3_A03 FS_165_sample_exp_A3_A03
mv sample_exp_A4_A04 FS_130_sample_exp_A4_A04
mv sample_exp_A5_A05 FS_120_sample_exp_A5_A05

要实际重命名文件,echo必须将其删除。


如果suffix是巨大的,您可以通过在第一场比赛后退出awk来加快速度:

awk -v pf="${fname##*_}" '$1 == pf {print $2; exit}' suffix

或grep在第一场比赛后停止:

grep -m 1 -Po "${fname##*_} \K.*" suffix

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用文本文件重命名文件夹中的批处理文件

来自分类Dev

使用文本文件中的列表重命名目录中的文件

来自分类Dev

重命名和删除Java中的文本文件

来自分类Dev

重命名/添加扩展文本文件中的内容

来自分类Dev

如何在python中重命名文本文件?

来自分类Dev

在使用perl重命名文本文件时,在文本文件末尾出现问号

来自分类Dev

使用python重命名文本文件中的特定行

来自分类Dev

使用python重命名文本文件中的特定行

来自分类Dev

使用内容中的字符串重命名文本文件

来自分类Dev

根据文本文件中包含的文本重命名目录中的文件

来自分类Dev

Bash脚本从文本文件源重命名文件

来自分类Dev

尝试根据文本文件重命名文件

来自分类Dev

从文本文件重命名海量文件

来自分类Dev

如何打开一个文本文件并用文件中的文本重命名?

来自分类Dev

如何创建多个文件夹并通过从文本文件中读取行来命名它们?

来自分类Dev

如何根据文本文件中的匹配重命名tar.gz文件

来自分类Dev

如何根据文本文件中的名称重命名文件?

来自分类Dev

重命名以数字值结尾的文本文件

来自分类Dev

解析并重命名文本文件

来自分类Dev

在Ubuntu 20.10中基于文本文件的第一行(内容)重命名/批量重命名文本文件?

来自分类Dev

如何通过在Windows中添加或删除后缀或前缀来重命名多个文件?

来自分类Dev

根据内容中的多个字符串重命名文本文件

来自分类Dev

CMD批次重命名。从文本文件中读取新名称

来自分类Dev

如何在python中逐行使用文本文件的新名称重命名文件夹中的文件名

来自分类Dev

如何在不重命名文件的情况下从文本文件中的一行中删除字符?

来自分类Dev

如何批量重命名文本文件使其成为每个文本文件中的第一个单词?

来自分类Dev

通过在文件名的前缀号上添加+1来批量重命名文件

来自分类Dev

如何根据文本文件的第一行重命名txt文件?

来自分类Dev

使用文本文件中的var

Related 相关文章

  1. 1

    使用文本文件重命名文件夹中的批处理文件

  2. 2

    使用文本文件中的列表重命名目录中的文件

  3. 3

    重命名和删除Java中的文本文件

  4. 4

    重命名/添加扩展文本文件中的内容

  5. 5

    如何在python中重命名文本文件?

  6. 6

    在使用perl重命名文本文件时,在文本文件末尾出现问号

  7. 7

    使用python重命名文本文件中的特定行

  8. 8

    使用python重命名文本文件中的特定行

  9. 9

    使用内容中的字符串重命名文本文件

  10. 10

    根据文本文件中包含的文本重命名目录中的文件

  11. 11

    Bash脚本从文本文件源重命名文件

  12. 12

    尝试根据文本文件重命名文件

  13. 13

    从文本文件重命名海量文件

  14. 14

    如何打开一个文本文件并用文件中的文本重命名?

  15. 15

    如何创建多个文件夹并通过从文本文件中读取行来命名它们?

  16. 16

    如何根据文本文件中的匹配重命名tar.gz文件

  17. 17

    如何根据文本文件中的名称重命名文件?

  18. 18

    重命名以数字值结尾的文本文件

  19. 19

    解析并重命名文本文件

  20. 20

    在Ubuntu 20.10中基于文本文件的第一行(内容)重命名/批量重命名文本文件?

  21. 21

    如何通过在Windows中添加或删除后缀或前缀来重命名多个文件?

  22. 22

    根据内容中的多个字符串重命名文本文件

  23. 23

    CMD批次重命名。从文本文件中读取新名称

  24. 24

    如何在python中逐行使用文本文件的新名称重命名文件夹中的文件名

  25. 25

    如何在不重命名文件的情况下从文本文件中的一行中删除字符?

  26. 26

    如何批量重命名文本文件使其成为每个文本文件中的第一个单词?

  27. 27

    通过在文件名的前缀号上添加+1来批量重命名文件

  28. 28

    如何根据文本文件的第一行重命名txt文件?

  29. 29

    使用文本文件中的var

热门标签

归档