假设我们有以下文件。
00043.jpg
00086.jpg
00123.jpg
...
04523.jpg
我想要的是,将其名称更改为以下名称。
00001.jpg
00002.jpg
00003.jpg
等等
如何在Linux控制台上执行此操作? 或者我可以使用python脚本。
答案 0 :(得分:1)
提供有效的文件夹路径并运行此代码。
import os
# Function to rename multiple files
def main():
i = 0
path = 'E:\\files\\'
for filename in os.listdir("E:\\files"):
dst = str(i).zfill(4) + ".jpg"
src = path + filename
dst = path + dst
# rename() function will
# rename all the files
os.rename(src, dst)
i += 1
# Driver Code
if __name__ == '__main__':
# Calling main() function
main()
答案 1 :(得分:0)
如果您的控制台中装有PHP,
<?php
$images = glob("*.jpg");
$start=0;
function squencer()
{
global $start;
++$start;
return str_pad($start, 5, "0", STR_PAD_LEFT);
}
foreach($images as $image)
{
$newname = squencer().".jpg";
rename($image, $newname);
}
然后运行:php -f rename.php
答案 2 :(得分:0)
用于重命名文件的唯一标准命令是mv,它的功能非常有限。您想要做的事情本质上需要一个脚本,因为顺序命名的复杂性超出了遍历甚至正则表达式的能力。您尚未指定目录中是否还有其他文件,或者是否关心原始顺序。与Windows不同,Linux目录内容的顺序不是可预测的。我假设您确实要保持原始顺序。您的示例指示0填充。这是一个重要的细节。这意味着词汇排序与我们直觉上的想法相符,例如43>42。从词法上讲,> 43> 42但42>043。我将向您展示如何使用Python进行此操作,假设该目录包含其他文件,并且您想要保持原始顺序。第一行是shebang,告诉操作系统使用python3。这对于Ubuntu特别有用,但是大多数系统将需要此版本或其变体,因为默认情况下它们使用python 2。而且,尽管Python不在乎脚本中的行尾是哪种类型,但是OS本身会读取shebang,并且要求它们是Unix。
#!/usr/bin/env python3
import os
jpgfiles = [f for f in os.listdir() if os.path.splitext(f)[1].casefold() == jpg']
jpgfiles.sort()
for i,f in enumerate(jpgfiles) :
os.rename(f, '%04.d' % i + '.jpg')
Python的固有功能使像这样的简单脚本能够执行相当复杂的操作。但是,您不必为每种可能要重命名的文件编写脚本。当找不到适合我进行各种重命名的现有程序时,我编写了一个Python程序,该程序可以完成您想做的事情以及更多事情。它是rene.py。您可以在Sourceforge https://rene-file-renamer.sourceforge.io上获得它。它是免费和开源的(GNU GPL v3.0)。执行所需操作的命令是* * .jpg:.jpg I /// 5。