重命名多个文件的一部分

重命名多个文件的一部分

取多个文件,命名为:

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' *

一行字,简洁易记。

相关内容