Bash
如何為一系列文件生成差異?
我有一系列幾千個文件,所有文件名都是按順序排列的,比如說 file1.x、file2.x、file3.x 等。所有這些文件都在同一個目錄中。
我知道如何生成從 file1.x 到 file2.x 的差異,但是有沒有辦法可以編寫一個 bash 腳本來生成從一個文件到下一個文件的差異?基本上它會首先使差異從 1 到 2,然後從 2 到 3,然後從 3 到 4,等等,直到完成。
以下腳本接受一個參數 like
"file*.x"
並將其應用於find | sort
獲取要處理的文件列表。對於數千個文件,您可能會得到“太多參數”echo file*.x
。#!/bin/bash prev= find . -maxdepth 1 -type f -name "$1" | sort -V | while read -r file; do file=${file#*/} # Remove leading ./ if test -n "$prev"; then diff -u "$prev" "$file" > "${prev%.*}-${file%.*}.diff" fi prev="$file" done
範例會話:
$ echo a > file1.x $ echo b > file2.x $ echo c > file3.x $ echo d > file5.x $ echo e > file10.x $ ./script.sh "file*.x" $ ls *.diff file1-file2.diff file2-file3.diff file3-file5.diff file5-file10.diff