这是我正在使用的脚本,并没有完成任务
cp -rv app/build/outputs/apk/!(*unaligned*).apk output/
#rename file after copy
for file in *.apk;
do
mv "$file" "$name-$appName".apk
done
基本上我想将所有文件从一个文件夹复制到另一个文件夹,然后重命名所有文件,副本工作正常。
文件的当前名称是下划线(_),但我想重命名使用( - )短划线。
原始档案:name_appName_1.0_debug.apk
预期结果:name-appName-1.0-debug.apk
我对正则表达式并不是很了解,因为当我在我的mac上运行相同的脚本时,它运行正常,但我在构建服务器上执行此操作。
答案 0 :(得分:1)
您可以使用find
和rename
快速重命名。
在cp
行之后:
find output/ -execdir rename 's/_/-/g' '{}' \+
find将以递归方式处理目录output
中的任何内容,并将传递它重命名的任何内容。表达式非常简单,实际上只分解为s/<the thing to replace>/<what it will be replaced with/g
最后的g
表示替换所有出现的内容。省略g
只会替换文件名中的第一个匹配项。 {}
是find
找到的令牌。