快速把好康的图集提取用的脚本/格式化输出printf @ shenmo | 0001-01-01T00:00:00Z | 1 分钟阅读 | 更新于 0001-01-01T00:00:00Z

发布时间: 2022-03-05T03:57:47+08:00

虽然很简单但是还是踩了一下午的坑,可以点进来看看我的解决方法多神奇

最开始想着直接find出来然后xargs到mv,直接mv -t解决

结果出现了问题:重名文件没法处理
为了解决问题,使用了mv -b,这样出现重名的时候就会自动重命名为*.png~
然而,新的问题来了。当一个以上的1.png出现的时候,mv只会做一次-b操作,于是就有很多的图片遗留下来了
为了避免遗留,我写了循环,判定条件是文件夹里是否还有png文件,如果有,就再执行一次mv
结果是莫名其妙的少了很多图片(还好在测试环境测试的,不然我的资源就…… 只好换方法玩


尝试find exec,每找到一个png执行一次转移,失败,发现这个exec又限制
一次一行发mv,结果还是少图片

这时候突然发现:既然要放弃文件名了,为什么不自己指定呢? 于是用了一个let i+=1

终于跑通了,但是处理1000+文件的时候,kodexplorer会从1,10,100开始排序。。。看图也要讲究顺序好吧

查找得printf可以格式化输出,输出0001,0002就不会被kod排序错误了,没有深究格式化输出原理,引例一个如下

name=`printf "%06d\n" $i`
#%06d\n的意思:%0:用0填充空位;6:一共六位数
#$i是一个自增变量

于是终于有了这个东西

#!/bin/bash
mkdir -p ../转移后/
png_still_exist="1"
i=0


until [ "$png_still_exist" = "" ]
do
png_still_exist=`find -name "*.png"`
let i+=1
name=`printf "%06d\n" $i`
find -name "*.png" | head -n 1 | xargs -I file mv -v file ../转移后/$name.png
done



mv ../转移后 .


脚本里可以直接看出我的思路历程。。。明显遗留了那个反复找png的循环

然而当时的我很纯真,一点都不觉得这样效率奇差& io爆炸,觉得可以用了,直到我开始写复制脚本的时候才发现没必要再这么做了。。。

最后利用sed解决

#!/bin/bash
mkdir -p ../转移后/
pngi="1"
i=0

pngi=`find -name "*.png"`
until [ "$pngi" = "" ]
do
let i+=1
name=`printf "%06d\n" $i`
echo "$pngi" | head -n 1 | xargs -I file mv -v file ../转移后/$name.png
pngi=`echo "$pngi" | sed '1d'` 
done



mv ../转移后 .


终于达到可用的程度了,不敢相信这东西我干了快6个小时。。。主要是校园网很不稳定+momo-daemon还没完全改造好(今天边踩坑边修复。。。)(这东西的文案不太适合发出来。。。过于emmmm。然而一个自动执行脚本的daemon还是很有趣的,有时间修改一下措辞再开源出来)

完整的脚本在这里

源仓库已删除,请查看

https://gitee.com/shenmo7192/momo-and-mox-tool-scripts/tree/master/lick-scripts

欢迎拿去用~

© 2019 - 2024 shenmo的世界

Hugo theme Dream.

辽ICP备2021012180号-1

上面有备案号的

avatar
关于我

星火应用商店项目 Leader

社交链接

本博客所有文章使用《知识共享 署名-非商业性使用-相同方式共享 4.0》(CC-BY-NC-SA-4.0)协议

这意味着你可以在署名并标明出处的情况下进行非商业转载(转载的文章也需要遵守CC-BY-NC-SA-4.0协议),但不可以进行商业转载