我有一些文件命名如下:
abc21pqr.txt
abc22pqr.txt
abc23pqr.txt
依此类推,直到
abc1000pqr.txt
我想取“abc”和“pqr”之间的数字,将该数字加 10 并重命名文件:
所以我的输出文件名应该是:
abc31pqr.txt
abc32pqr.txt
abc33pqr.txt
依此类推,直到
abc1010pqr.txt
如何使用 Unix one-liner 做到这一点?
谢谢
对于GNU Bash,假设数字前后的字符串是固定的,并且所有文件都在当前目录中:
find -maxdepth 1 -type f -name 'abc[0-9]*pqr.txt' |
sed 's|^./abc||; s|pqr\.txt$||' |
sort -nr |
while read src; do
mv abc${src}pqr.txt abc$((src+10))pqr.txt
done