在文件夹中查找所有图像文件,并使用数字更改其名称

时间:2018-12-17 06:10:31

标签: file

假设我们有以下文件。

00043.jpg

00086.jpg

00123.jpg

...

04523.jpg

我想要的是,将其名称更改为以下名称。

00001.jpg

00002.jpg

00003.jpg

等等

如何在Linux控制台上执行此操作? 或者我可以使用python脚本。

3 个答案:

答案 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。