重新命名 UNIX 目錄中的多個檔案

重新命名 UNIX 目錄中的多個檔案

我使用 sed 或其他一些命令在 unix 目錄中使用以下格式的檔案。

Owner.Env.File_010513_1200_ver1.expdp
Owner.Env.File_010513_1200_ver2.expdp
Owner.Env.File_010513_1200_ver3.expdp
Owner.Env.File_010513_1200_ver4.expdp

我想按以下格式重命名這些文件

Owner.Env.File_100613_2300_ver1.expdp
Owner.Env.File_100613_2300_ver2.expdp
Owner.Env.File_100613_2300_ver3.expdp
Owner.Env.File_100613_2300_ver4.expdp

答案1

for file in Owner.Env.File_10513_1200_ver*.expdp; do
    mv "$file" "${file/010513_1200/100613_2300}"
done

答案2

如果文件不是太多(幾萬個),那麼這應該可以完成這項工作(隨後檢查ls Owner.Env.File_010513_1200_ver*.expdp文件是否剩餘,如果有則重複該命令):

rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp

對於 GNU 來說,處理大量文件(以及具有奇怪名稱的文件)的替代方案是:

find . -regex ".*/Owner.Env.File_010513_1200_ver[1-9][0-9]*.expdp" -print0 | \
  xargs -0 rename File_010513_1200_ File_100613_2300_ 

相關內容