iT邦幫忙

0

Shell Script一次想比對多個資料夾和多個檔案

afgn 2013-08-20 11:49:1414242 瀏覽

我有個網站底下有破百個 index.php 和 sitemap.xml
我想用 Shell Script 去自動比對每一個網站目錄下的這兩個檔案裡面的值
分別是 id='123' 和 site='123' (數字會變動, 但每個目錄底下的兩個檔裡的兩個數字應該相同), 請問該如何達成?

我可以做到單一比對一個目錄, 但是不知道如何批次下去跑?

#!/bin/bash
t1=cat index.php |grep id | awk -F'=' '{print $2}'
t2=cat sitemap.xml |grep site| awk -F'=' '{print $2}'
echo "---------------------------"
echo $t1
echo $t2
echo "---------------------------"
if test $t1 -eq $t2
then echo eqaul
else echo not equal in $PWD
fi

pajace2001 iT邦研究生 1 級 ‧ 2013-08-20 13:56:58 檢舉
不是很清楚你的問題點在哪裡?
可以舉例說明一下嗎?
CalvinKuo iT邦大師 7 級 ‧ 2013-08-20 16:46:30 檢舉
單純檔案比對我會用WinMerge
http://download.ithome.com.tw/article/index/id/1131
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

16
wiseguy
iT邦超人 1 級 ‧ 2013-08-20 14:15:22
最佳解答

依你所寫的 script,頭尾再加上 for 迴圈就行了:
#!/bin/bash
for I in find . -type f -name index.php
do
PWD=$(dirname $I)
cd $PWD

t1=cat index.php |grep id | awk -F'=' '{print $2}'
t2=cat sitemap.xml |grep site| awk -F'=' '{print $2}'
echo "---------------------------"
echo $t1
echo $t2
echo "---------------------------"
if test $t1 -eq $t2
then echo eqaul
else echo not equal in $PWD
fi

done

afgn iT邦新手 5 級 ‧ 2013-08-28 15:03:55 檢舉

感謝wiseguy大大 ^_^

6
fillano
iT邦超人 1 級 ‧ 2013-08-20 14:07:58

如果檔名是固定的,變化的是目錄,那你可以用find取出目錄名的list,然後透過for處理每個目錄。

我要發表回答

立即登入回答