zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    【洛谷P2927 [USACO08DEC]拼图游戏Jigsaw Puzzles】深搜
    【洛谷1219】 八皇后 (搜索)
    【Uva 12558】 Egyptian Fractions (HARD version) (迭代加深搜,IDA*)
    【转】DCX (数独-八皇后问题)
    【2016 11 14】 总结
    【HDU 3038】 How Many Answers Are Wrong (带权并查集)
    【POJ1182】 食物链 (带权并查集)
    【20161111双11模拟赛】总结
    【HDU 5381】 The sum of gcd (子区间的xx和,离线)
    【HDU 5233】Tree chain problem (树形DP+树剖+线段树|树状数组)最大权不相交树链集
  • 原文地址:https://www.cnblogs.com/scue/p/3022241.html
Copyright © 2011-2022 走看看