【问题标题】:Rename files by adding 10 - Unix通过添加 10 重命名文件 - Unix
【发布时间】:2012-09-29 03:29:49
【问题描述】:

我有一些文件命名如下:

abc21pqr.txt
abc22pqr.txt
abc23pqr.txt

以此类推直到

abc1000pqr.txt

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

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

abc31pqr.txt
abc32pqr.txt
abc33pqr.txt

以此类推直到

abc1010pqr.txt

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

谢谢

【问题讨论】:

  • 如果abc23pqr.txtabc33pqr.txt 在重命名之前都存在会怎样?
  • 您还应该提及您正在使用的 哪个 shell - 没有像 Unix onliner 这样的东西...

标签: file unix rename


【解决方案1】:

对于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

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 2021-04-02
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2017-01-13
    • 2021-09-08
    相关资源
    最近更新 更多