shell腳本,替換xcasset圖片名稱

1趟畏、背景
xcasset是蘋果為iOS開發(fā)者提供的高效文件圖片尋址贡歧,slicing,圖片分包的圖片文件管理工具赋秀。
xcasset中圖片結構如圖利朵,每張圖片根據(jù)機型不同,像素大小也不同沃琅。2x,3x圖片在imageset文件夾下哗咆,同時還有一個contents.json文件標識1x蜘欲,2x益眉,3x圖片分別是哪張。

imageSet.png

2、使用習慣不好帶來困擾
有時開發(fā)時為了方便郭脂,直接不改圖片名稱直接將圖片拖拽到imageset中年碘,為了代碼可讀性,工程開發(fā)往往約定好圖片的命名規(guī)則展鸡,所以imageset的命名要比真實圖片名(實體文件名)規(guī)則屿衅,app運行的時候加載圖片是根據(jù)imageset的名稱加載的(索引名),所以真實圖片名怎么起都不會有影響莹弊。下圖是索引名和實體文件名不一樣的情況


differentName.png

下圖是content.json的內(nèi)容


share.png

3涤久、解決方法
這么做可能會對之后的無用圖片排查,為了減少包大小進行圖片壓縮造成一定的困擾忍弛,所以索引名和實體文件名盡量一致响迂。
為了解決不一致現(xiàn)象,可以手動修改實體文件名细疚,但圖片太多又顯得枯燥蔗彤,改后的一段時間再經(jīng)若干迭代還會有這種現(xiàn)象出現(xiàn)》杓妫可以用腳本解決這個問題然遏,快速,方便吧彪,還可以和小伙伴吹牛待侵。

4、原理
腳本需要做三件事
1)遍歷工程中所有 .imageset文件来氧,找到索引名和實體文件名不一樣的圖片诫给。
2)將1x,2x,3x圖片名稱改為和 .imageset的文件名稱一致。
3)將contents.json文件中的圖片名稱也替換為 .imageset的文件名啦扬。

5中狂、使用方式
sh /Users/liyi/Desktop/sh/file_name.sh /Users/liyi/Desktop/sh/TestDir
如下圖
sh的意思是執(zhí)行shell腳本, /Users/liyi/Desktop/sh/file_name.sh 是腳本所在路徑扑毡,/Users/liyi/Desktop/sh/TestDir是所要操作的iOS工程的文件夾胃榕,這樣就可以將工程下所有索引名和實體文件名的圖片名都替換為索引名。


use.png

6瞄摊、代碼

#!/bin/bash
#echo -e "please drag a file or input dile name \n"
#read dirPath

#d_suffix :文件夾后綴
#sub_path :文件夾后綴
#dir_or_file :文件除了文件名稱的路徑
#real_name :imageset之前的名稱(沒有后綴)
#finial_old_name :修改前的圖片名(帶后綴)
#finial_real_name :修改后的圖片名(帶后綴)

#找到png的后綴
suffix="png"
image_2x_suffix="@2x.png"
image_3x_suffix="@3x.png"
image_1x_suffix="@.png"
content_suffix=".json"
picture_d_suffix="imageset"

#content.json文件中字符串替換
function changeContentFile() {
    origin_name="$1"
    new_name="$2"
    contentPath="$3"
    if test "$new_name" != "_"
        then
        sed -i "" "s/$origin_name/$new_name/g" "$content_path"
    fi
}

#尋找需要替換的文件
function findFile() {
for file in `ls $1`
    do
        dir_or_file=$1"/"$file
        if test -d $dir_or_file
            then
                d_suffix=${file:0-8:8}
                #如果后綴是imageset
                if test "$d_suffix" = "$picture_d_suffix"
                    then
                    sub_path=$dir_or_file"/"
                    real_name=${dir_or_file##*/}
                    real_name=${real_name%.*}
                    before_1x_name="_"
                    before_2x_name="-"
                    before_3x_name="-"
                    finial_1x_real_name="_"
                    finial_2x_real_name="_"
                    finial_3x_real_name="_"
                    #算出改名后的名字
                    for subfile in `ls $sub_path`
                        do
                            finial_old_name=${subfile##*/}
                            finial_new_name="-"
#2x圖片
                            if test "${finial_old_name:0-7:7}" = "$image_2x_suffix"
                                then
                                before_2x_name=$subfile
                                finial_new_name=$sub_path$real_name$image_2x_suffix
                                if test "$sub_path$subfile" != "$finial_new_name"
                                    then
                                    finial_2x_real_name=$real_name$image_2x_suffix
                                    mv $sub_path$subfile $finial_new_name
                                fi

                            fi
#3x圖片
                            if test "${finial_old_name:0-7:7}" = "$image_3x_suffix"
                                then
                                before_3x_name=$subfile
                                finial_new_name=$sub_path$real_name$image_3x_suffix
                                if test "$sub_path$subfile" != "$finial_new_name"
                                    then
                                    finial_3x_real_name=$real_name$image_3x_suffix
                                    mv $sub_path$subfile $finial_new_name
                                fi

                            fi
#1x圖片
                            if test "${finial_old_name:0-4:4}" = "$image_1x_suffix"
                                then
                                before_1x_name=subfile
                                finial_new_name=$sub_path$real_name$image_1x_suffix
                                if test "$sub_path$subfile" != "$finial_new_name"
                                    then
                                    finial_1x_real_name=$real_name$image_1x_suffix
                                    mv $sub_path$subfile $finial_new_name
                                fi
                            fi
                    
                        done
#content.json文件
                content_path=$sub_path"Contents.json"
                changeContentFile $before_1x_name $finial_1x_real_name $content_path
                changeContentFile $before_2x_name $finial_2x_real_name $content_path
                changeContentFile $before_3x_name $finial_3x_real_name $content_path
            else
                findFile $dir_or_file
            fi
        fi
    done
}

root_dir="$1"
findFile $root_dir

7勋又、修改后
執(zhí)行過后產(chǎn)生的diff如下圖


腳本執(zhí)行后的diff.png

上邊代碼換行看著很不舒服,截圖一張

代碼截圖.png

看到最后辛苦了换帜,希望對你有幫助
多謝觀看?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楔壤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惯驼,更是在濱河造成了極大的恐慌蹲嚣,老刑警劉巖递瑰,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隙畜,居然都是意外死亡抖部,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門议惰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慎颗,“玉大人,你說我怎么就攤上這事言询「┪” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵运杭,是天一觀的道長讯屈。 經(jīng)常有香客問我,道長县习,這世上最難降的妖魔是什么涮母? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮躁愿,結果婚禮上叛本,老公的妹妹穿的比我還像新娘。我一直安慰自己彤钟,他們只是感情好来候,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逸雹,像睡著了一般营搅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梆砸,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天转质,我揣著相機與錄音,去河邊找鬼帖世。 笑死休蟹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的日矫。 我是一名探鬼主播赂弓,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哪轿!你這毒婦竟也來了盈魁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤窃诉,失蹤者是張志新(化名)和其女友劉穎杨耙,沒想到半個月后姓惑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡按脚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了敦冬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辅搬。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脖旱,靈堂內(nèi)的尸體忽然破棺而出堪遂,到底是詐尸還是另有隱情,我是刑警寧澤萌庆,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布溶褪,位于F島的核電站,受9級特大地震影響践险,放射性物質(zhì)發(fā)生泄漏猿妈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一巍虫、第九天 我趴在偏房一處隱蔽的房頂上張望彭则。 院中可真熱鬧,春花似錦占遥、人聲如沸俯抖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芬萍。三九已至,卻和暖如春搔啊,著一層夾襖步出監(jiān)牢的瞬間柬祠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工负芋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓶盛,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓示罗,卻偏偏與公主長得像惩猫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚜点,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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