我有一个包含多个文件的目录。每个文件可以有不同的前缀和后缀,但都包含一个六位数字。我想批量重命名文件,以便更改其中一个数字(特别是第二个)。
所以,例如
*?2????* -> *?5????*
所有文件的第二个数字始终相同,但其他所有文件都不同。更复杂的是,一些文件有两个六位数字。如果两个数字都需要更新,
e.g。
*?2????*?2????* -> *?5????*?5????*
任何指针?
答案 0 :(得分:0)
试试这个:
for file in *?2????*; do
if [[ $file =~ [0-9]{6} ]]; then
echo mv "$file" "$(sed 's/2/5/g' <<< "$file")"
else
echo mv "$file" "$(sed 's/[0-9]/5/2' <<< "$file")"
fi
done
sed
命令将第二次出现的数字替换为5。
如果这符合您的需求,只需从我的代码段中删除echo
命令。