我对批量重命名还很陌生,我进行了一些查看,发现了一些关于重命名大量同一类型的文件的内容,但没有关于重命名一堆具有不同扩展名的文件的内容。
我的意思是我有一个像这样的目录:
Folder
|
file.jpg
EBUFEWO.png
otherFile.jpg
我正在试图弄清楚如何将其重命名为如下形式:
Folder
|
Renamed_0001.jpg
Renamed_0002.png
Renamed_0003.jpg
我想保留文件夹中文件的扩展名,但像上面那样重命名它们。
我已经寻找了一段时间但并没有真正遇到过这样的例子,任何帮助都将非常有用!
答案1
我想我会
shopt -s nullglob
cd Folder
n=1
for file in *.*; do
printf -v newfile 'Renamed_%04d.%s' $((n++)) "${file##*.}"
echo mv -- "$file" "$newfile"
done
mv -- EBUFEWO.png Renamed_0001.png
mv -- file.jpg Renamed_0002.jpg
mv -- otherFile.jpg Renamed_0003.jpg
(echo
出于测试目的而添加)。或者,使用基于 perl 的prename
cd Folder
prename -n 'our $n; s/(.*)\.(.*)$/sprintf "Renamed_%04d.%s", ++$n, $2/e' *.*
EBUFEWO.png renamed as Renamed_0001.png
file.jpg renamed as Renamed_0002.jpg
otherFile.jpg renamed as Renamed_0003.jpg
(-n
为测试目的而添加)。
答案2
我希望这有帮助
count=1; \
for file in * ; do ext=${file##*.}; \
while [ ${#count} -ne 3 ]; do count="0"$count; done; \
mv "$file" Renamed_$count.$ext; count=$((10#$count+1)); done
这是针对单个文件夹的内容进行的测试,并按照您的指定执行。
ext=${file##*.}
获取要重命名的文件的扩展名。while [ ${#count} -ne 3 ]; do count="0"$count; done
您要求重命名的文件保留 3 位数字,这将添加所需数量的前导零,1
变为001
并20
变为020
等mv "$file" Renamed_$count.$ext;
将文件重命名为指定的参数。
鉴于我有限的经验,我确信有更简单、更有效的方法。
请注意,这是在指定文件夹上执行一次的。