首页 > 解决方案 > 如何使用 Ubuntu“重命名”工具替换目录和文件名中的字符串?

问题描述

当子目录和文件名都包含相同的子字符串时,如何重命名父目录中的子目录和文件名中的子字符串?

特别是,我想在子目录和文件名中用“cam_1”替换“cam_0”。

例子:

parent:
--subdirectory_cam_0:
------ subdir_cam_0_image1.jpg
------ subdir_cam_0_image2.jpg
------ subdir_cam_0_image3.jpg

转至:

parent:
--subdirectory_cam_1:
------ subdir_cam_1_image1.jpg
------ subdir_cam_1_image2.jpg
------ subdir_cam_1_image3.jpg

我使用了下一个命令:

find -iname "*cam_0*" | rename 's/(cam_0)/cam_1/'   

但它只会更改子目录的名称,而不是文件的名称。

它抛出下一条消息:

./subdirectory_cam_0/subdir_cam_0_image1.jpg not renamed: ./subdirectory_cam_1/subdir_cam_0_image1.jpg already exists
./subdirectory_cam_0/subdir_cam_0_image3.jpg not renamed: ./subdirectory_cam_1/subdir_cam_0_image3.jpg already exists
./subdirectory_cam_0/subdir_cam_0_image2.jpg not renamed: ./subdirectory_cam_1/subdir_cam_0_image2.jpg already exists

标签: linuxubunturename

解决方案


只需g在重命名匹配模式的末尾添加即可重命名所有找到的匹配项。

试试这个:

find -iname "*cam_0*" | rename 's/(cam_0)/cam_1/g'   

推荐阅读