重命名具有多个文件扩展名的文件

时间:2016-12-18 17:46:53

标签: bash shell

我有数百个以下列形式命名的pdf文件:

a.php?ano=1&tp=O&np=1&lg=62&gp=TOTAL&id=1516
a.php?ano=1&tp=O&np=1&lg=62&gp=TOTAL&id=1517
a.php?ano=1&tp=O&np=1&lg=62&gp=TOTAL&id=1518
a.php?ano=1&tp=O&np=1&lg=62&gp=TOTAL&id=1519

我需要以这种方式重命名:

a_1516.pdf
a_1517.pdf
a_1518.pdf
a_1519.pdf

如何从命令行重命名它们?

3 个答案:

答案 0 :(得分:1)

bash方法,内置regEx功能,~运算符。

#!/bin/bash

for file in a.php*
do
    [[ $file =~ ^([[:alnum:]])(.*)=([[:digit:]]+)$ ]]
    mv -v "$file" "${BASH_REMATCH[1]}"_"${BASH_REMATCH[3]}".pdf
done

答案 1 :(得分:0)

来自Perl的rename(独立命令):

rename -n 's/\.php.*=/_/;s/$/.pdf/' a.php*
  

-n:无操作:显示哪些文件已重命名。

如果一切正常,请删除-n

答案 2 :(得分:0)

简单的单行将是

对于f in" a.php?ano = 1& tp = O& np = 1& lg = 62& gp = TOTAL& id =" *;做mv" $ {f}" " $ {F / .PHP ANO = 1&安培; TP =的O& NP = 1&安培; LG = 62&安培; GP = TOTAL和ID = / _}。PDF&#34 ;;完成