重命名与 UNIX 查找关键字匹配的多个文件

Mik*_*maa 2 rename shell-script find

我从 find 命令获得以下输出,用于查找包含yyy名称的文件:

./plonetheme/xxx/yyy-logo.png
./plonetheme/xxx/profiles/default/plonetheme.yyy_various.txt
./plonetheme/xxx/skins/plonetheme_yyy_custom_images
./plonetheme/xxx/skins/plonetheme_yyy_custom_images/CONTENT.txt
./plonetheme/xxx/skins/plonetheme_yyy_custom_templates
./plonetheme/xxx/skins/plonetheme_yyy_custom_templates/CONTENT.txt
./plonetheme/xxx/skins/plonetheme_yyy_custom_templates/main_template.pt
./plonetheme/xxx/skins/plonetheme_yyy_styles
./plonetheme/xxx/skins/plonetheme_yyy_styles/base_properties.props
./plonetheme/xxx/skins/plonetheme_yyy_styles/CONTENT.txt
Run Code Online (Sandbox Code Playgroud)

我将如何重命名所有文件,以便将字符串yyy替换为zzz?

Den*_*nis 6

您可以使用bash 字符串操作来实现您想要的:

find PATH/PATTERN -exec bash -c 'mv "$0" "${0/yyy/zzz}"' {} \;
Run Code Online (Sandbox Code Playgroud)

-exec交换机执行命令到逃出;,其中{}是,因此目前处理的疗法文件的路径。

bash -c 'mv "$0" "${0/cix/stix}"' {}将该路径作为参数传递给 bash,bash 将$0(第一个参数,例如,./plonetheme/xxx/yyy-logo.png)移动到${0/yyy/zzz}(第一个操作参数,例如,./plonetheme/xxx/zzz-logo.png)。