gpt4 book ai didi

linux - Bash 用 * 数字枚举文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:55 25 4
gpt4 key购买 nike

我写了一个脚本来访问每个目录并使用 imagemagick 来拼接它们以用于游戏目的的平铺。

find . -type d | while read d; do
# $k = filename generated from folder name
montage -border 0 -geometry +0+0 -background none -tile 6x $d/* ~/tiles/$k.png
done

当图像像这样命名时它工作得很好,因为使用 * 时顺序被保留:im_0001.png, im_0002.png... 但是当有人像这样命名图像时它会失败: im_1.png、im_2.png,.. 因为 im_10.png 出现在 im_2.png 之前并且订单失败。始终手动修复文件名并不容易,有没有办法通过 * 枚举文件名但强制使用数字顺序?我知道排序函数具有该功能,但我如何在我的脚本中执行此操作?由于文件名没有结构,我很好奇如何实现这一点。

最佳答案

我相信您必须先重命名这些文件:

#!/bin/bash

ext=.png

for f in *$ext; do
num=$(basename "${f##*_}" $ext)
mv "$f" "${f%_*}_$(printf "%04d" $num)$ext"
done

关于linux - Bash 用 * 数字枚举文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17342153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com