檢查iOS工程imageset圖片缺失(shell版)

接到需求的時(shí)候就用shell寫(xiě)了 , 結(jié)果4000個(gè)文件要檢測(cè)七八分鐘

然后用python實(shí)現(xiàn)了 ,只用了不到2秒........這差距

需求背景: 要檢查imageset里面2x圖和3x圖的缺失問(wèn)題

檢查指標(biāo):
1.imageset里面的Contents.json 里, 是否2x和3x都有對(duì)應(yīng)的filename
2.有filename的情況下,imageset里是否有對(duì)應(yīng)的圖片

畢竟不是專(zhuān)門(mén)寫(xiě)shell的 , 如果有更優(yōu)化的寫(xiě)法, 歡迎各位大佬指教

shell解析json比較麻煩 , 下面有2種 1.利用python 2.利用jq庫(kù)
brew install jq

直接上代碼:
#!/bin/sh


# find . -name '*.fb' -type f -print -exec rm -rf {} \;

#############################  分割線    [ 全局變量 ] ###################################

CHECK_PATH=$1 #要檢查的路徑
WHITELIST=$2 #白名單

echo 檢查路徑:${CHECK_PATH}
echo 白名單:${WHITELIST}

#############################  分割線    [ 自定義方法 ] ###################################

function check2x3x()
{
    contents_path=$1
    # echo $contents_path



    # 1.查 @2x 和 @3x的 filename是否存在
    # content=`cat $contents_path`
    # lens=`echo $content| python3 -c "import sys, json; data = json.load(sys.stdin); print(len(data['images']))"`
    # # echo $lens
    # for (( j = 0; j < $lens; j++ )); do
    #   filename=`echo $content| python3 -c "import sys, json; print(json.load(sys.stdin)['images'][$j].get('filename'))"`
    #   # echo $filename
    #   if [[ $filename == None ]]; then
    #       # echo "空"
    #       #filename 為空
    #       scale=`echo $content| python3 -c "import sys, json; print(json.load(sys.stdin)['images'][$j]['scale'])"`    
    #       echo "路徑: $contents_path  ,Content.json文件缺少 @${scale} 圖片的 filename"  >> checkImg_result.txt
    #   else
    #       # echo "非空"
    #       #filename 不為空 就檢查對(duì)應(yīng)圖片是否存在
    #       #拼圖片路徑
    #       imageset_dir=`dirname $contents_path`
    #       imgPath=${imageset_dir}/${filename}
    #       if [[ ! -f $imgPath ]]; then
    #           echo "路徑: ${imageset_dir}  ,缺少 ${filename} 圖片"  >> checkImg_result.txt              
    #       fi

    #   fi

    # done


# 1.查 @2x 和 @3x的 filename是否存在

    content=`cat $contents_path`
    lens=`echo $content | jq '.images' | jq length`
    # echo $lens
    # echo lens:$lens
    for (( j = 0; j < $lens; j++ )); do
        filename=`echo $content | jq ".images[${j}]" | jq '.filename'`
        # echo $filename
        if [[ $filename == None ]]; then
            # echo "空"
            #filename 為空
            scale=`echo $content | jq ".images[${j}]" | jq '.scale'`
            echo "路徑: $contents_path  ,Content.json文件缺少 @${scale} 圖片的 filename"  >> checkImg_result.txt
        else
            # echo "非空"
            #filename 不為空 就檢查對(duì)應(yīng)圖片是否存在
            #拼圖片路徑
            imageset_dir=`dirname $contents_path`
            imgPath=${imageset_dir}/${filename}
            if [[ ! -f $imgPath ]]; then
                echo "路徑: ${imageset_dir}  ,缺少 ${filename} 圖片"  >> checkImg_result.txt              
            fi

        fi

    done


    # 2.查scale是否缺失  [不用做]

    # 3.查對(duì)應(yīng)的圖片是否存在



    # echo $contents

    # lens=`cat $contents_path| python3 -c "import sys, json; data = json.load(sys.stdin); print(len(data['images']))"`
    # echo 數(shù)組數(shù)量:$lens
    # sizes=(1x 2x 3x)

    # for (( j = 0; j < $lens; j++ )); do
    #   # echo $i
    #   size=`cat $contents_path| python3 -c "import sys, json; print(json.load(sys.stdin)['images'][$j]['scale'])"`
    #   # echo $size
    #   sizes=( ${sizes[*]/$size} )

    # done
    # echo "移除數(shù)組結(jié)束"

    # # echo ${sizes[*]}

    # for (( k = 0; k < ${#sizes[@]}; k++ )); do
    #   echo "路徑: $contents_path  ,Content.json文件缺少 ${sizes[k]} 圖片"  >> checkImg_result.txt
    # done;

    # echo 寫(xiě)入文件結(jié)束
     

}



#############################  分割線    [ 流程 ] ###################################

#判斷要檢查的路徑是否正確
if [[ ! -d $CHECK_PATH ]]; then
    echo "\033[31m ERROR : 要檢查的不是一個(gè)路徑 , 程序退出 \033[0m"
    exit 0
fi


#加載白名單 ,拼接查找命令
#有參數(shù),且存在
find_command_line="find $CHECK_PATH"
if [[ ! -z $WHITELIST ]] && [[ -f $WHITELIST ]]; then
    echo 白名單存在
    content=`cat whitelist.txt`
    content=(${content})
    for((i = 0; i < ${#content[@]}; i++)); do
        echo 白名單目錄$i:${content[i]}
        find_command_line="$find_command_line -path ${content[i]} -prune -o"
    done;
    find_command_line="$find_command_line -name *.imageset -type d -print"
else
    find_command_line="find $CHECK_PATH -name *.imageset -type d"
fi


#刪除之前的記錄
if [ -f checkImg_result.txt ];then
    echo "文件不存在"
    rm checkImg_result.txt
fi

#獲取所有的 xxx.imageset
imageset_paths=`$find_command_line`

#轉(zhuǎn)換一下, 要不不是數(shù)組
imageset_paths=(${imageset_paths})





#遍歷路徑
contents_json_len=${#imageset_paths[@]}
echo 文件個(gè)數(shù):${#imageset_paths[@]}
for((i = 0; i < ${#imageset_paths[@]}; i++)); do

    imageset_path=${imageset_paths[i]}
    #拼接 Content.json路徑
    contents_json_path=${imageset_path}/Contents.json
    # echo Content路徑:$contents_json_path

    #通過(guò)路徑檢查是否缺失@2x 或者 @3x 的圖片
    check2x3x $contents_json_path
    echo 進(jìn)度:$i/$contents_json_len
    # echo "\n"
done;


open checkImg_result.txt



上一篇: 檢查iOS工程imageset圖片缺失(python版)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疏虫,更是在濱河造成了極大的恐慌济舆,老刑警劉巖读慎,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滋早,死亡現(xiàn)場(chǎng)離奇詭異掐松,居然都是意外死亡众旗,警方通過(guò)查閱死者的電腦和手機(jī)罢杉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贡歧,“玉大人滩租,你說(shuō)我怎么就攤上這事±洌” “怎么了律想?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绍弟。 經(jīng)常有香客問(wèn)我技即,道長(zhǎng),這世上最難降的妖魔是什么樟遣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任而叼,我火速辦了婚禮,結(jié)果婚禮上豹悬,老公的妹妹穿的比我還像新娘葵陵。我一直安慰自己,他們只是感情好瞻佛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布脱篙。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绊困。 梳的紋絲不亂的頭發(fā)上文搂,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音秤朗,去河邊找鬼煤蹭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛川梅,可吹牛的內(nèi)容都是我干的疯兼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贫途,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吧彪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起丢早,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤姨裸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后怨酝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體傀缩,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年农猬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赡艰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斤葱,死狀恐怖慷垮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揍堕,我是刑警寧澤料身,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站衩茸,受9級(jí)特大地震影響芹血,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜楞慈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一幔烛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧囊蓝,春花似錦说贝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至俯萎,卻和暖如春傲宜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夫啊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工函卒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撇眯。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓报嵌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親熊榛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锚国,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容