【问题标题】:How to rename all the files in current directory in linux如何在linux中重命名当前目录中的所有文件
【发布时间】:2016-07-29 08:46:09
【问题描述】:

我想重命名当前目录中的所有文件。所以现在它们的形式是:“xxx-9666_01.so”,我想将它重命名为“xxx_9444_01.so”。我如何在 Linux 中做到这一点?

【问题讨论】:

  • 您应该解释您希望在文件名中进行何种更改,例如,如果在文件名中遇到9666,您是否真的希望变成9444?我不认为那是你想要的。
  • @fvu 是的
  • 试试rename '9666' '9444' ???_9666_01.so
  • rename 的问题是有多个 rename 可执行文件具有完全不同的选项。大多数发行版从util-linux 包(来自kernel.org)和另一个(我相信perl rename)安装了标准的rename

标签: linux


【解决方案1】:

使用循环:

for f in *-9666_01.so; do
  echo mv "$f" "${f%-9666_01.so}_9444_01.so"
done

当您确定 echo 正在执行您希望它执行的操作时,请删除它。

【讨论】:

    【解决方案2】:

    使用参数扩展子字符串替换(与子字符串删除相反)对上一个答案的变体可以实现相同的目标,并且可能更具可读性:

    for f in *-9666_01.so; do
        echo mv "$f" "${f/-9666/-9444}"
    done
    

    (对操作满意时删除echo)

    子字符串替换将使用f中的b替换a,使用${f/a/b}形式(隐含结束/)替换第一个a 的实例替换为b,或将${f//a/b} 替换为a所有 个实例为b

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2017-11-20
      • 2018-05-01
      • 2015-01-08
      • 2012-08-11
      • 2014-05-16
      • 2015-07-29
      • 2018-07-16
      • 2019-10-22
      相关资源
      最近更新 更多