未填充的文件名中的零填充数字
Zero-pad numbers in file names that are not padded
我有一个充满名为
的文件的目录
image_1.jpg
image_2.jpg
...
image_10.jpg
...
image_335.jpg
现在我想使用一个命令行工具,它希望图像按字母顺序排列。但是这些文件名的字母顺序是:image_100.jpg image_101.jpg ... image_10.jpg image_11.jpg ... image_1.jpg ...
.
如何使用简短的 shell / bash 命令重命名这些文件?我发现 sed
是可行的方法,但这个工具对我来说是个谜。
好的,我找到了解决方案,不是使用 shell 命令,而是编写一个简单的 ruby 脚本:
input = Dir.glob("image*.jpg")
input.each do |name|
parts = name.split /[_\.]/
number = parts[1]
number = number.rjust(3, '0')
new_name = [parts[0], '_', number, '.', parts[2]].join
File.rename(name, new_name)
end
与bash:
for i in *; do if [[ $i =~ (image_)([0-9]{1,2})(\.jpg) ]]; then printf -v num "%03d" "${BASH_REMATCH[2]}"; echo mv -v "$i" "${BASH_REMATCH[1]}${num}${BASH_REMATCH[3]}"; fi; done
如果一切正常,删除 echo
。
使用具有这些文件名的目录进行测试:
image_100.jpg
image_101.jpg
image_10.jpg
image_11.jpg
image_1.jpg
image_2.jpg
image_334.jpg
image_335.jpg
image_3.jpg
创建的命令:
mv -v image_10.jpg image_010.jpg
mv -v image_11.jpg image_011.jpg
mv -v image_1.jpg image_001.jpg
mv -v image_2.jpg image_002.jpg
mv -v image_3.jpg image_003.jpg
结果:
image_001.jpg
image_002.jpg
image_003.jpg
image_010.jpg
image_011.jpg
image_100.jpg
image_101.jpg
image_334.jpg
image_335.jpg
我有一个充满名为
的文件的目录image_1.jpg
image_2.jpg
...
image_10.jpg
...
image_335.jpg
现在我想使用一个命令行工具,它希望图像按字母顺序排列。但是这些文件名的字母顺序是:image_100.jpg image_101.jpg ... image_10.jpg image_11.jpg ... image_1.jpg ...
.
如何使用简短的 shell / bash 命令重命名这些文件?我发现 sed
是可行的方法,但这个工具对我来说是个谜。
好的,我找到了解决方案,不是使用 shell 命令,而是编写一个简单的 ruby 脚本:
input = Dir.glob("image*.jpg")
input.each do |name|
parts = name.split /[_\.]/
number = parts[1]
number = number.rjust(3, '0')
new_name = [parts[0], '_', number, '.', parts[2]].join
File.rename(name, new_name)
end
与bash:
for i in *; do if [[ $i =~ (image_)([0-9]{1,2})(\.jpg) ]]; then printf -v num "%03d" "${BASH_REMATCH[2]}"; echo mv -v "$i" "${BASH_REMATCH[1]}${num}${BASH_REMATCH[3]}"; fi; done
如果一切正常,删除 echo
。
使用具有这些文件名的目录进行测试:
image_100.jpg image_101.jpg image_10.jpg image_11.jpg image_1.jpg image_2.jpg image_334.jpg image_335.jpg image_3.jpg
创建的命令:
mv -v image_10.jpg image_010.jpg mv -v image_11.jpg image_011.jpg mv -v image_1.jpg image_001.jpg mv -v image_2.jpg image_002.jpg mv -v image_3.jpg image_003.jpg
结果:
image_001.jpg image_002.jpg image_003.jpg image_010.jpg image_011.jpg image_100.jpg image_101.jpg image_334.jpg image_335.jpg