Rename
批量重命名,更改前綴
如何批量替換許多文件的前綴?
我有很多文件,比如
- 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
cut
,CL
添加到結果中,並將其儲存在$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