扫码关注官方订阅号
有一堆文件命名如
lorem_1_aaa.PNG中间的数字递增
现在想将中间的数字+2,其他保持不变请问命令行怎么写?
学习是最好的投资!
ls lorem_* | sort -t_ -nk2 -r | awk -F_ '{printf "mv %s %s_%d_%s\n", $0, $1, $2 + 2, $3}' | bash
如@citaret同学所说原先的做法有问题,会导致覆盖,修正为按文件名倒序排列。
felix021 的答案有个问题,就是会把已有的文件覆盖了,稍稍改写一下:
ls lorem_* | awk -F_ '{printf "mv %s _%s_%d_%s\n", $0, $1, $2 + 2, $3}' | bash rename 's/^_//' _lorem*
先给所有替换好的文件加个前缀 _,然后去掉,只要保证这个前缀不和你路径下的其他文件冲突即可。
_
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
ls lorem_* | sort -t_ -nk2 -r | awk -F_ '{printf "mv %s %s_%d_%s\n", $0, $1, $2 + 2, $3}' | bash如@citaret同学所说原先的做法有问题,会导致覆盖,修正为按文件名倒序排列。
felix021 的答案有个问题,就是会把已有的文件覆盖了,稍稍改写一下:
先给所有替换好的文件加个前缀
_,然后去掉,只要保证这个前缀不和你路径下的其他文件冲突即可。