首页 > 解决方案 > 重命名文件夹中的部分多个文件

问题描述

我有多个文件如下

abcd_q1_2018.pdf
abcd_q2_2018.pdf
accc_q1_2018.pdf
accc_q2_2018.pdf
axxx_q2_2018.pdf

和一个包含

abcd 1111
accc 2222
axxx 3333

现在我想将上面的文件重命名为

1111_q1_2018.pdf
1111_q2_2018.pdf
2222_q1_2018.pdf
2222_q2_2018.pdf
3333_q2_2018.pdf

请帮忙。

标签: linuxbashshell

解决方案


我喜欢 for 循环,所以这里有一些 for 循环!

外循环遍历重命名映射,内循环将重命名映射应用于目录中的每个文件。

   IFS=$'\n' # So we can march through the map line-by-line 
   for key in `cat rename_map`; do 
      orig=`echo ${key} | awk '{print $1}'`
      new=`echo ${key} | awk '{print $2}'`
      for file in *_2018.pdf; do 
        new_file=`echo ${file} | sed -e "s/^${orig}/${new}/"` # ["] for variable sub
        mv ${file} ${new_file}                                # Rename it!
      done 
    done

推荐阅读