![重命名多个文件的一部分](https://linux22.com/image/56053/%E9%87%8D%E5%91%BD%E5%90%8D%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86.png)
取多个文件,命名为:
data_a_LT.fits
data_a_LT.coo
data_a_LT.ec
data_a_LT.grp
我想用“LT_A”替换所有“a_LT”,这样我就有:
data_LT_A.fits
data_LT_A.coo
data_LT_A.ec
data_LT_A.grp
如何用一个命令来做到这一点。就像是:
mv *a_LT* *LT_A*
答案1
使用bash:
for file in *; do [[ -f "$file" ]] && mv "$file" "${file/a_LT/LT_A}"; done
data_LT_A.coo
data_LT_A.ec
data_LT_A.fits
data_LT_A.grp
答案2
如果rename
可以使用以下命令:
rename 's/a_LT/LT_A/' *
另一种方法awk
:
find -type f | awk -F'a_LT' '{printf "mv \"%s\" \"%sLT_A%s\"\n", $0, $1, $2}' | bash
答案3
我习惯使用 xargs:
ls -1 | sed 's/\(\(.*\)a_LT\(.*\)\)/\1 \2LT_A\3/' | xargs -n 2 mv
答案4
我选择了以下方法,效果很好。
rename 's/a_LT/LT_A/g' *
一行字,简洁易记。