2015-06-27 67 views
0

我正在運行Fedora 18 linux,我有一個PHP項目,我一直在努力一段時間。我正在嘗試清理Web應用程序的生產部署。我有一個圖標圖像文件夾,隨着時間的推移,我收集的文件不再用在我的代碼中,或者是因爲我更改爲代碼中的不同圖標,或者圖像文件用於創建其他圖標。我所要做的就是製作整個代碼項目的備份副本,並且在命令行上HOPEFULLY使用find,rmgrep的組合,掃描圖像的整個文件夾,並且如果圖像沒有在任何地方使用在我的代碼文件中,刪除它們。我在網上進行了一些搜索,我發現在文件中找到一行文本並將其刪除,但我沒有發現任何與我正在嘗試執行的操作相似的內容。如何刪除linux中代碼文件中未使用的文件?

任何幫助表示讚賞...

回答

0

找到未使用的圖標文件是做你的整個項目的建設,然後看看圖標文件的訪問時間最簡單的方法。最近沒有閱讀過的內容(當然包括grep)會很快顯示出來。

例如,假設您在一小時前做了備份,並且在10分鐘前完成了一次構建,則訪問時間將會不同。然後

find . -amin +15 -type f 

應該給出一個很好的「未使用」文件列表。如果你確定名單的(你沒有做備份,對吧?),那麼你可以清除未使用的文件:

find . -amin +15 -type f -exec rm -i {} \; 

如果你真的一定,你可以刪除-i選項。

+0

我唯一的問題是,正如我所提到的,有一些文件用於創建我想刪除的其他圖標文件,並且其中許多文件最近都被訪問過。這就是爲什麼我想到用所有代碼文件對文件名進行GRE檢查,看它們是否存在於代碼文件中的任何地方。我只是不確定最好的方式來做到這一點。在文件夾中有395個文件,單獨瀏覽每個文件需要很多時間。 –

+0

但是由於您知道*何時訪問了這些文件,因此您可以設計合適的閾值來修剪最近未訪問的文件。 –

+0

正如我所說,有395個圖標文件。如果我在一段時間內沒有處理或訪問過某個模塊,那麼您的解決方案將刪除所需的文件。無論您如何使用解決方案,都會有應該包含在應用程序中的文件,這些文件將被刪除,並且不需要的文件將保留。請參閱下面的解決方案它完全符合我所說的我需要的,而且我不需要設計任何閾值。我只是告訴它圖像文件所在的文件夾以及代碼文件要搜索的文件夾,並且在不到一分鐘的時間內我就擁有了我所需要的內容。 –

1

所以這就是我想出來的。我把一個shell腳本放在一起,做我所需要的。爲了那些偶然發現的人的利益,以及那些想要批評我的解決方案的人,在這裏。我選擇跳過在.xcf文件中找到的文件,因爲這些文件僅用於創建許多圖標文件,並且一些.png圖像將grep到這些.xcf文件。

#!/bin/bash 
FILES=/var/www/html/support_desk/templates/default/images/icons/* 
codedir=/var/www/html/support_desk_branch/ 

for f in $FILES 
do 
    bn=$(basename $f) 

    ext="${bn##*.}" 

    echo "Processing $bn file..." 

    if ! fgrep --quiet -R $bn $codedir; then 
    if [ ext != 'xcf' ]; then 
     rm $f 
    fi 
    fi 

done 

現在我只有在PHP腳本文件中使用的圖像文件。爲了不錯過在mysql數據庫中的表中定義的菜單中使用的任何圖標文件,我爲該表創建了數據的sql轉儲文件,並將其放入應用程序文件的路徑中在運行shell腳本之前。

相關問題