刪除項(xiàng)目中未使用圖片的腳本

刪除項(xiàng)目中未使用圖片的腳本

近來項(xiàng)目進(jìn)入收尾階段,需要的是不斷優(yōu)化項(xiàng)目,包括程序的運(yùn)行內(nèi)存、時(shí)間等等,同時(shí)也需要?jiǎng)h除掉項(xiàng)目中不需要的文件,在自購的[iOS開發(fā)進(jìn)階](http://item.jd.com/11598468.html)一書中發(fā)現(xiàn)了一個(gè)刪除圖片文件的腳本。

程序如下:

1. for i in \`find . -name "\*.png" -o -name "\*.jpg"\`; do     
2.      file=\`basename -s .jpg "$i" | xargs basename -s .png | xargs basename -s @2x\`
3.      result=\`ack -i "$file"\`
4.      if [ -z "$result" ]; then 
5       echo "$i"
        #可更改為刪除
6.      #rm "$i"
7.  fi
8. done

上述項(xiàng)目使用到了一個(gè)基于“grep”高級封裝過的ack庫。所以在使用之前需先安裝ack庫到本機(jī)上(推薦使用brew安裝——在終端鍵入brew install ack即可).

:略有些坑的是《iOS開發(fā)進(jìn)階》這本書的面向人群是iOS初級學(xué)習(xí)者,但是在書上卻絲毫沒有提到上述程序應(yīng)當(dāng)運(yùn)行——沒錯(cuò)上述程序無法直接運(yùn)行??!不得不說巧大神也有考慮不周的時(shí)候啊,沒有想到還有我等弱雞玩家~~ 這涉及到Linux下的多個(gè)命令以及bash shell的相關(guān)知識·· 遭遇如此情況,我只得拿出多年隨身攜帶的《鳥哥的Linux私房菜》來一一翻譯對照完善腳本來使用~~(誰叫咱弱呢··)。

可運(yùn)行程序如下:

1. PATH=/bin:/usr/local/bin:~/bin:/sbin:/usr/bin
2. export PATH
3. for i in `find . -name "*.png" -o -name "*.jpg"`; do
4.      file=`basename -s .jpg "$i" | xargs basename -s .png | xargs basename -s @2x`
5.      result=`ack -i "$file"`
6.      if [ -z "$result" ]; then 
7.          echo "$i"
8.          #可更改為刪除
9.          #rm "$i"
10.     fi
11. done

原理:

從當(dāng)前文件目錄中遞歸搜索出后綴名為.png和.jpg的文件——A

從當(dāng)前文件目錄中遞歸搜索出其他文件——B

將A中的所有文件名在B中所有文件的內(nèi)容中搜索,如果檢索出來的結(jié)果是假(表明A中某文件沒有被使用),則打?。ㄒ部藙h除)出A中的該文件。

1、2——聲明接下來的語句中使用的命令存放的文件夾,當(dāng)執(zhí)行命令時(shí),則直接進(jìn)入該文件夾路徑內(nèi)尋找。(:號是文件夾分隔符

3——是forin結(jié)構(gòu)相信諸位iOS開發(fā)者是非常屬性的,遍歷find命令找到的文件.(find后面的.的含義是當(dāng)前目錄,-name是指定文件名,號表示0-n個(gè)字符的通配,-o 是or的含義*)

4——是為變量file賦值,其中使用了basename命令、xargs命令以及至關(guān)重要的 | 管道。(如果對bash shell感興趣,對管道和xargs命令的深入學(xué)習(xí)是必不可少的)

5——使用了ack命令。

6——是bash shell里面的if使用方式,-z 表示判定后面的文件是否為空。

7——是打印

8,9——加了#號表明是注釋的語句,rm 是刪除命令。

10——是if fi 的搭配。(bash shell語法)
11——是for in ; do done 的 for循環(huán)語句搭配(bash shell語法)

希望上述對各位仁兄有所幫助,也歡迎各位仁兄前來批評指正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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