如何在特定文件夹中使用bash脚本重命名文件

时间:2017-05-22 16:14:51

标签: bash shell file-rename

这是我正在使用的脚本,并没有完成任务

 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上运行相同的脚本时,它运行正常,但我在构建服务器上执行此操作。

1 个答案:

答案 0 :(得分:1)

您可以使用findrename快速重命名。

cp行之后:

find output/ -execdir rename 's/_/-/g' '{}' \+

find将以递归方式处理目录output中的任何内容,并将传递它重命名的任何内容。表达式非常简单,实际上只分解为s/<the thing to replace>/<what it will be replaced with/g最后的g表示替换所有出现的内容。省略g只会替换文件名中的第一个匹配项。 {}find找到的令牌。