linux - 如何使用 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
解决方案
只需g
在重命名匹配模式的末尾添加即可重命名所有找到的匹配项。
试试这个:
find -iname "*cam_0*" | rename 's/(cam_0)/cam_1/g'
推荐阅读
- c# - How to update an object with non-NULL properties?
- javascript - How to add fmt:message into .html()
- python - Dask Worker 在 AWS 上找不到模块
- javascript - 如何修复 fetch() 方法引发的无法获取错误?
- flutter - ScreenUtilInit - 颤动
- amazon-web-services - 我什么时候应该创建不同的 VPC 而不仅仅是不同的子网?
- kubernetes - 滚动更新时 kubernetes 上的骆驼集群使用 Hazelcast 错误
- c# - 托管的 asp.net 应用程序 DirectoryNotFoundException
- android - 更新 MutableLiveData 的 MutableList
- snakemake - 用snakemake改变目录名和fastq文件名