Bash 批量重命名文件以更改数字
我有一个包含多个文件的目录。每个文件可以有不同的前缀和后缀,但都包含一个六位数的数字。我想批量重命名文件,使其中一个数字发生更改(特别是第二个数字) 比如说Bash 批量重命名文件以更改数字,bash,Bash,我有一个包含多个文件的目录。每个文件可以有不同的前缀和后缀,但都包含一个六位数的数字。我想批量重命名文件,使其中一个数字发生更改(特别是第二个数字) 比如说 *?2????* -> *?5????* 对于所有文件,第二个数字总是相同的,但其他所有数字都可能不同。使事情更加复杂的是,有些文件有两个六位数的数字。如果两个数字都需要更新 e、 g 有什么指示吗?试试这个: for file in *?2????*; do if [[ $file =~ [0-9]{6} ]]; then
*?2????* -> *?5????*
对于所有文件,第二个数字总是相同的,但其他所有数字都可能不同。使事情更加复杂的是,有些文件有两个六位数的数字。如果两个数字都需要更新
e、 g
有什么指示吗?试试这个:
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
用于*?2???*中的文件;做
如果[[$file=~[0-9]{6}]];然后
echo mv“$file”“$”(sed's/2/5/g)讨论rename
命令还有无数其他问题,这里的要求似乎过于具体,不允许任何普遍适用的答案比“在文件上循环并使用匹配的文件名重命名”更具体“。我认为OP说,在两个6位字符串的情况下,两个字符串都需要更新(根据他的例子,以不同的方式更新)。抱歉,输入错误。是的,两个字符串都需要更新,但方式相同-两个字符串中的第二个数字最初将相同,需要更改为相同的数字。不完全符合我的要求。我想更改第二个数字。而您的脚本将2的所有实例都更改为5。但我认为您已经给了我足够的时间,可以使用并尝试然后算出答案。谢谢。如果你认为答案有用,你可以“投票”它。如果你认为答案回答得很好,你可以通过点击复选标记的大纲来“接受”它(将为绿色),这样,搜索stackechange网站的人就会知道问题得到了很好的回答。这就是stackechange网站的工作原理,谢谢;)
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