簡單的資料夾檔案差別比對的實現

2021-06-04 22:45:44 字數 1270 閱讀 9422

cd $1

array1=`find . -name "*.c" -o -name "*.h" -o -name "*.s" `

cd $2

array2=`find . -name "*.c" -o -name "*.h" -o -name "*.s" `

echo $array1 > tempf1

echo $array2 > tempf2

`sed "s/ /\n/g" tempf1 > temp1`

`sed "s/ /\n/g" tempf2 > temp2`

diff temp1 temp2 > labdiff

cat labdiff

rm tempf1 tempf2 temp1 temp2

因為,給本科生輔導實驗的緣故。需要統計下每一次實驗**之間到底增加了幾個檔案。雖然是乙個很簡單的流程。但是,想通過指令碼來實現。本來想使用python,但是由於自己對python不夠熟悉,而且明顯linux檔案下操作沒有shell好用。所以,使用shell來完成。

**完成的功能是比較兩個資料夾下,源**發生的變化。比如說./lab2和./lab3下的變化,因為我們的實驗是連續性質的,以後的實驗需要在之前的基礎上新新增幾個資料夾充實實驗的內容。首先,使用find命令查詢本地資料夾下所有的源**檔案,最好是相對檔名而不是絕對位址。因為,為了方便下一步的比較。find命令產生的資料是以空格分隔的檔名稱。不能使用diff直接進行比對,所以要使用sed將空格替換成回車。將生成的字串儲存到檔案中,然後比較兩個檔案。得到兩個資料夾下源**的變化情況。

在實現的過程中,遇到一些問題。因為使用shell比較少,所以想使用陣列將所有的檔案名字儲存起來,然後,自己實現演算法比較兩個陣列中元素的不同。結果,發現shell命令得到元素都是流資料,要儲存到陣列中很麻煩。而且shell中陣列使用起來也不是特別方便。這裡也不太清楚shell中有沒有什麼好的容器。只能放棄這個思路。

還有,使用sed將空格替換為回車時。發現echo $array1產生的資料流通過管道傳遞到sed中時,sed命令無法完成替換功能。只能首先將資料儲存到檔案中,再直接使用sed命令讀取檔案。最近一直覺得自己需要掌握一門指令碼語言,用來快速實現一些自己的想法。一直也覺得python是乙個很好的解決方案,但是沒有時間去學習。學習一門指令碼語言,應該在平時生活中不斷去使用,慢慢積累經驗。而且,要盡快實現功能。雖然,可能實現的不夠優美,但是使用指令碼語言本身就是為了快速開發實現。在使用中學習語言,多使用指令碼來實現自己的想法。這兩個內容剛好相輔相成,互相促進。

assets資料夾與static資料夾的區別

assets資料夾與static資料夾的區別 原位址 相同點 assets資料夾和static資料夾在vue cli生成的專案中,都是用來存放靜態資源的。不同點 assets目錄中的檔案會被webpack處理解析為模組依賴,只支援相對路徑形式 build的時候由webpack解析為模組依賴。stat...

檔案 資料夾的操作

1.檔案的管理 file 1 讀取檔案 檔案的路徑 檔案的格式 gb2312 utf 8 encoding.default 應用到檔案內容的編碼 系統預設編碼 encoding.getencoding gb2312 換成國際編碼 2 所有的檔案操作都在system.io裡面 讀取全部的文字,返回乙個...

刪除資料夾的檔案

儲存資料很多時候要儲存檔案,儲存檔案用路徑的形式檔案,就要把檔案儲存到你的專案裡,查詢時通過資料庫裡儲存的路徑訪問檔案 儲存了檔案就要刪除 查詢出資料庫的檔案路徑,提取資料庫的路徑,通過正則匹配 拼接出檔案所在路徑,然後刪除檔案 如果沒有where tbmarketactivity.marketac...