Shell

如何通過替換文件名中的單詞來重命名多個文件?

  • January 4, 2015

將 ACDC 替換為 AC-DC

例如我們有這些文件

ACDC - 搖滾樂不是噪音污染.xxx

ACDC - Rocker.xxx

ACDC - 拍攝到驚險刺激.xxx

我希望他們成為:

AC-DC - Rock N’ Roll Ain’t Noise Pollution.xxx

AC-DC - Rocker.xxx

AC-DC - 射擊驚險.xxx

我知道 sed 或 awk 用於此操作。我無法用Google搜尋任何東西,所以我正在尋求你的幫助 =) 你能否為這項任務提供完整的工作 shell 命令?

回饋:針對 OSX 使用者的解決方案

rename 's/ACDC/AC-DC/' *.xxx

man rename

DESCRIPTION
      "rename" renames the filenames supplied according to the rule specified as the 
first argument.  The perlexpr argument is a Perl expression which is expected to modify the 
$_ string in Perl for at least some of the filenames specified.  If a given filename is not 
modified by the expression, it will not be renamed.  If no filenames are given on
          the command line, filenames will be read via standard input.

例如,要重命名與“*.bak”匹配的所有文件以去除副檔名,您可能會說

rename 's/\.bak$//' *.bak

要將大寫名稱轉換為小寫,您可以使用

rename 'y/A-Z/a-z/' *

引用自:https://serverfault.com/questions/228733