【问题标题】:Change -- to . for all files in a directory改成 。对于目录中的所有文件
【发布时间】:2011-02-22 12:55:15
【问题描述】:

我需要重命名目录中的所有文件。源文件名的一些示例是:

alpha--sometext.381928
comp--moretext.7294058

生成的文件将被重命名为:

alpha.sometext.381928
comp.moretext.7294058

--前后的字符数不一致

该脚本需要在当前安装的 Ubuntu 和 FreeBSD 上运行。这些是精简的 LAMP 服务器,因此只安装了必要的软件包。

谢谢

【问题讨论】:

    标签: bash rename


    【解决方案1】:

    通过 bash:

    for file in *--*; do
        mv "${file}" "${file/--/.}"
    done
    

    神奇之处在于${file/--/.},它是${file} 的值,除了每个“--”更改为“.”

    【讨论】:

    • 不错的一个。我想写一个,但你打败了我!
    • 您应该始终引用任何包含文件名的变量。 mv "${file}" "${file/--/.}"
    • @DennisWilliamson - 我已经更新了我的答案,但确切地说,您需要引用其中可能包含空格的任何内容。
    【解决方案2】:

    作为纯 shell 的替代方案,您可以使用 rename,这是 Perl 附带的标准实用程序。对于简单的情况更方便。

    rename 's/--/./' *
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2015-02-01
      • 2012-05-18
      相关资源
      最近更新 更多