Rename

批量重命名,更改前綴

  • April 3, 2021

如何批量替換許多文件的前綴?

我有很多文件,比如

  • TestSRConnectionContext.h
  • TestSRConnectionContext.m

我想將它們全部更改為

  • CLConnectionContext.h
  • CLConnectionContext.m

我該怎麼做?

for name in TestSR*
do
   newname=CL"$(echo "$name" | cut -c7-)"
   mv "$name" "$newname"
done

這使用 bash 命令替換從輸入文件名中刪除前 6 個字元 via cutCL添加到結果中,並將其儲存在$newname. 然後它將舊名稱重命名為新名稱。這是在每個文件上執行的。

cut -c7-指定僅應從輸入返回索引 7 之後的字元。7-是從索引 7 開始的範圍,沒有結束;也就是說,直到行尾。

以前,我使用cut -b7-, 但-c應該用於處理每個字元可能有多個字節的字元編碼,例如 UTF-8。

我想說最簡單的方法是使用rename許多 Linux 發行版上常見的命令。此命令有兩個常見版本,因此請查看其手冊頁以查找您擁有的版本:

## rename from Perl (common in Debian systems -- Ubuntu, Mint, ...)
rename 's/^TestSR/CL/' *

## rename from util-linux-ng (common in Fedora systems, Red Hat, CentOS, ...)
rename TestSR CL *

如果你想在 Debian 系統中使用來自 util-linux-ng 的版本,它可以在名稱下使用rename.ul

引用自:https://unix.stackexchange.com/questions/47367