我在一個目錄中有大約 1000 個 html 檔案,它們是網頁的不同版本。每個都以頁面修改的日期命名 - 例如20190104, 20190105- 但偶爾會有間隙,例如介于20190105和之間20190107。
我知道如何使用 diff 將一個檔案與緊隨其后的版本進行比較并將差異保存到第三個檔案,但我想要一個回圈來處理所有 1000 個檔案。該標準for i in ./*不起作用,因為我需要在其中參考多個檔案回圈。
我懷疑我需要將檔案串列轉換為陣列,然后有一個參考陣列元素 n 和 n 1 的 for 回圈,但我在語法上遇到了問題。
uj5u.com熱心網友回復:
元素 n 和 n 1
不,不要想未來——你不知道。你知道過去 - 遍歷n-1and n。
prev= # empty previous filename
for cur in ./*; do
if [[ -n "$prev" ]]; then # if prev is Nonempty
do_stuff "$prev" "$cur"
fi
prev=$cur
done
uj5u.com熱心網友回復:
成對比較:
#!/usr/bin/env sh
comparePairs() {
while [ $# -gt 1 ]
do
printf 'Compare %s with %s.\n' "$1" "$2"
shift
done
}
comparePairs foo bar baz cuux
輸出:
Compare foo with bar.
Compare bar with baz.
Compare baz with cuux.
現在你的差異對:
#!/usr/bin/env bash
diffPairs() {
outputDir="$1"
shift
while [ $# -gt 1 ]
do
diff "$1" "$2" > "$outputDir/$1-$2.diff"
shift
done
}
# Use first argument as output directory
diffPairs "$@"
例子:
./diffPairs ~/outputdir ./*.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/417412.html
標籤:
上一篇:在一行上列印骰子
下一篇:聚合后的雄辯選擇欄位
