• [Linux] 批量把不规则的Android应用程序命名为[中文_版本号](在无中文名称时命名为英文)


    #!/bin/bash - 
    #===============================================================================
    #
    #          FILE: apk_rename.sh
    # 
    #         USAGE: ./apk_rename.sh 
    # 
    #   DESCRIPTION: 
    # 
    #       OPTIONS: ---
    #  REQUIREMENTS: ---
    #          BUGS: ---
    #         NOTES: ---
    #        AUTHOR: linkscue (scue), linkscue@gmail.com
    #       CREATED: 2013年04月15日 15时17分18秒 HKT
    #     COPYRIGHT: Copyright (c) 2013, linkscue
    #      REVISION: 0.1
    #  ORGANIZATION: ATX风雅组
    #===============================================================================
    
    set -o nounset                              # Treat unset variables as an error
    if [[ $# != 1 ]]; then
        echo "usage: $(basename $0) <apk_dir>"
        exit 0
    fi
    dir="$1"
    
    #-------------------------------------------------------------------------------
    #  相关的函数
    #-------------------------------------------------------------------------------
    en_label ()                                     # 获取英文名称
    {
        aapt d badging "$1" | awk -n -F"'" '/application-label:/ {print $2}'| sed 's/ //g' 2>/dev/null
    }
    
    cn_label ()                                     # 获取中文名称
    {
        aapt d badging "$1" | awk -n -F"'" '/application-label-zh_CN/ {print $2}' | sed 's/ //g' 2>/dev/null
    }
    zh_label ()
    {
        aapt d badging "$1" | awk -n -F"'" '/application-label-zh:/ {print $2}' | sed 's/ //g' 2>/dev/null
    }
    version ()
    {
        aapt d badging "$1" | awk -n -F"'" '/versionName/ {print $6}'| sed 's/ //g' 2>/dev/null
    }
    activity ()                                     # 获取活动
    {
        aapt d badging "$1" | awk -n -F"'" '/launchable-activity/ {print $2}' | sed 's/ //g' 2>/dev/null
    }
    
    #-------------------------------------------------------------------------------
    #  变量替换方式把' '替换为'_'
    #-------------------------------------------------------------------------------
    find $dir -name "*.apk" -type f | while read line;            # 只显示文件
        do tmp=\"$line\";                           # 获取文件
        echo $tmp;                                  # 为xargs准备
        echo ${tmp// /_} ;                          # 变量替换 
    done | xargs -n 2 mv -v 2> /dev/null
    
    find $dir -name "*.apk" -type f | while read apk
    do
        version_name=$(version "$apk")
        cn_label_name=$(cn_label "$apk")
        if [[ "$cn_label_name" != "" ]]; then
            new_name="${cn_label_name// /_}"_"$version_name".apk
            echo "mv: $(basename "$apk")   --> $new_name"
            mv "$apk" "$dir/$new_name"
        else
            zh_label_name=$(zh_label "$apk")
            if [[ "$zh_label_name" != "" ]]; then
                new_name="${zh_label_name// /_}"_"$version_name".apk
                echo "mv: $(basename "$apk")   --> $new_name"
                mv "$apk" "$dir/$new_name"
            else
                en_label_name=$(en_label "$apk")
                if [[ "$en_label_name" != "" ]]; then
                    new_name="${en_label_name// /_}"_"$version_name".apk
                    echo "mv: $(basename "$apk")   --> $new_name"
                    mv "$apk" "$dir/$new_name"
                fi
            fi
    
        fi
    done 2> /dev/null

     

    ------------
    微博:http://weibo.com/scue
    Github:http://github.com/scue
  • 相关阅读:
    内向者生存手册
    不良言论屏蔽方案探讨——附加一点思考
    提高复用性的编码习惯
    如何管好.net的内存
    谨防信息超载
    .net的反对派们,精神比表面的东西更重要
    为什么我老是半途而废?
    对不起,我也是来给.Net泼冷水的(山寨版)
    把重要的事情先做好
    学英语(外语)的一个误区
  • 原文地址:https://www.cnblogs.com/scue/p/3022241.html
Copyright © 2020-2023  润新知