重命名目录中的多个文件 - 使用 sed 或 rename 命令

重命名目录中的多个文件 - 使用 sed 或 rename 命令

我尝试了很多不同的sed,mvrename命令 - 但我仍然无法重命名这些文件。有 50 多个文件 - 我尝试了找到的命令 - 帮助 thx

原始文件名:

PAGES_TEST1_SART1.XML
PAGES_TEST2_SART2.XML
PAGES_TEST3_SART3.XML
PAGES_TEST4_SART4.XML

PAGES_PROD1_SART1.XML
PAGES_PROD2_SART2.XML
PAGES_PROD3_SART3.XML
PAGES_PROD4_SART4.XML

答案1

使用珀尔的rename(可在任何操作系统中使用):

rename -n 's/TEST/PROD/g' ./*TEST*.XML

删除-n开关,又名试运行当你的尝试令人满意时重命名为真实的

答案2

rename你用的是哪个?和

$ rename --version
rename from util-linux 2.39.3

从...开始:

$ ls -1
PAGES_TEST_SART1.XML
PAGES_TEST_SART2.XML
PAGES_TEST_SART3.XML
PAGES_TEST_SART4.XML
PAGES_TEST_SART5.XML
PAGES_TEST_SART6.XML
PAGES_TEST_SART7.XML
PAGES_TEST_SART8.XML
PAGES_TEST_SART9.XML

你可以做:

$ rename TEST PROD *

并得到:

$ ls -1
PAGES_PROD_SART1.XML
PAGES_PROD_SART2.XML
PAGES_PROD_SART3.XML
PAGES_PROD_SART4.XML
PAGES_PROD_SART5.XML
PAGES_PROD_SART6.XML
PAGES_PROD_SART7.XML
PAGES_PROD_SART8.XML
PAGES_PROD_SART9.XML

答案3

也许沿着这条线(对于bash):

for f in \`ls | grep PAGES_TEST\`; do mv $f $(echo $f | sed 's/TEST/PROD/'); done

注意后面的勾号。

相关内容