-2

我有一些文件命名如下:

abc21pqr.txt
abc22pqr.txt
abc23pqr.txt

依此类推,直到

abc1000pqr.txt

我想取“abc”和“pqr”之间的数字,将该数字加 10 并重命名文件:

所以我的输出文件名应该是:

abc31pqr.txt
abc32pqr.txt
abc33pqr.txt

依此类推,直到

abc1010pqr.txt

如何使用 Unix one-liner 做到这一点?

谢谢

4

1 回答 1

2

对于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
于 2012-10-10T09:35:46.340 回答