替换“文件名”、“文件夹名”和“文件内容”中出现的内容

2024-09-29 21:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下结构的文件夹和文件,其中一些文件包含字符串ModuleName。在

ModuleName
├── Application\ Logic
│   └── Interactor
│       ├── ModuleNameInteractor.swift
│       └── ModuleNameInteractorIO.swift
├── Module\ Interface
│   └── IModuleNameModule.swift
└── User\ Interface
    ├── Presenter
    │   └── ModuleNamePresenter.swift
    ├── View
    │   ├── IModuleNameView.swift
    │   └── ModuleNameViewController.swift
    └── Wireframe
        └── ModuleNameWireframe.swift

我想用Linux或python脚本替换文件夹名、文件名和文件内容中所有出现的ModuleName,换成另一个名称(比如TestModule)。在

我尝试使用find命令,但将子文件夹/子文件的文件夹provoque No such file or directory重命名。在


Tags: 文件字符串文件夹application结构interfacemoduleswift
2条回答

我将使用sed -i(就地替换)进行内容替换,使用find|while read循环进行重命名。在

以下是BSD sed(Mac上的标准)版本:

find . -type f -exec sed -e s/ModuleName/TestModule/g -i '' '{}' ';'
find . -depth -name '*ModuleName*' -print0|while IFS= read -rd '' f; do mv -i "$f" "$(echo "$f"|sed -E 's/(.*)ModuleName/\1TestModule/')"; done

下面是GNU-sed:

^{pr2}$

while read中的额外细节是正确处理带有空格和其他奇怪字符的任意文件名。一些快速测试表明zshread现在可以正确处理以null结尾的字符串;如果有问题,请尝试在bash中运行它。在

在尝试与终端抗争之后,我发现免费提供的Massreplaceit应用程序here可以很容易地处理这个问题

PS:我不在那里工作!在

相关问题 更多 >

    热门问题