首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按数字顺序+字母重命名文件

按数字顺序+字母重命名文件
EN

Stack Overflow用户
提问于 2019-03-06 21:22:04
回答 4查看 251关注 0票数 0

我有一个文件夹,其中包含名为image1.png, image2.png, image3.png等的.png图像。

这个文件夹的组织方式是,3个连续的图像代表来自同一主题的数据,所以我希望用相同的标识号+一个字母来区分它们。如下所示:

代码语言:javascript
复制
image1.png --> 1-a.png
image2.png --> 1-b.png
image3.png --> 1-c.png
image4.png --> 2-a.png
image5.png --> 2-b.png
image6.png --> 2-c.png

以此类推。

要做到这一点,最好的方法是什么?一个Perl脚本?或者在python中生成一个具有所需名称的.txt,然后使用它重命名文件?我正在使用Ubuntu

提前感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-06 21:35:51

给定Python语言中的文件列表files,您可以使用itertools.product生成所需的数字和字母对:

代码语言:javascript
复制
from itertools import product
import os

os.chdir(directory_containing_images)
# instead of hard-coding files you will actually want:
# files = os.listdir('.')
files = ['image1.png', 'image2.png', 'image3.png', 'image4.png', 'image5.png', 'image6.png']
for file, (n, a) in zip(files, product(range(1, len(files) // 3 + 2), 'abc')):
    os.rename(file, '{}-{}.png'.format(n, a))

如果您将os.rename替换为print,则上面的代码将输出:

代码语言:javascript
复制
image1.png 1-a.png
image2.png 1-b.png
image3.png 1-c.png
image4.png 2-a.png
image5.png 2-b.png
image6.png 2-c.png
票数 1
EN

Stack Overflow用户

发布于 2019-03-06 21:54:47

perl中,您可以执行以下操作:

代码语言:javascript
复制
my @new_names = map {
    my ( $n ) = $_ =~ /image(\d+)\.png/;
    my $j = (($n - 1)  % 3) + 1;
    my $char = (qw(a b c))[ int( $n / 3 ) ];
    "$j-$char.png"
} @files;

这假设@files数组没有特殊的顺序。

票数 0
EN

Stack Overflow用户

发布于 2019-03-06 23:09:58

有趣的项目。:)

代码语言:javascript
复制
declare -i ctr=1 fileset=1              # tracking numbers
declare -a tag=( c a b )                # lookup table
for f in $( printf "%s\n" *.png |       # stack as lines
            sort -k1.6n )               # order appropriately
do ref=$(( ctr++ % 3 ))                 # index the lookup
   end=${f##*.}                         # keep the file ending
   mv "$f" "$fileset-${tag[ref]}.$end"  # mv old file to new name
   (( ref )) || (( fileset++ ))         # increment the *set*
done

mv image1.png 1-a.png
mv image2.png 1-b.png
mv image3.png 1-c.png
mv image4.png 2-a.png
mv image5.png 2-b.png
mv image6.png 2-c.png
mv image7.png 3-a.png
mv image8.png 3-b.png
mv image9.png 3-c.png
mv image10.png 4-a.png
mv image11.png 4-b.png
mv image12.png 4-c.png

显然,根据需要对pathing &c进行编辑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55024139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档