我有数百个以下列形式命名的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
如何从命令行重命名它们?
答案 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 ;;完成