当子目录和文件名都包含相同的子字符串时,如何重命名父目录中的子目录和文件名中的子字符串?
特别是,我想在子目录和文件名中用“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
只需g
在重命名匹配模式的末尾添加即可重命名所有找到的匹配项。
试试这个:
find -iname "*cam_0*" | rename 's/(cam_0)/cam_1/g'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句