何千ものファイルがあり、すべてのファイル名が順番にあるので、file1.x、file2.x、file3.xなどを考えてみましょう。これらのファイルはすべて同じディレクトリにあります。
file1.xからfile2.xでdiffを生成する方法を知っていますが、あるファイルから次のファイルにdiffを生成するbashスクリプトを作成する方法はありますか?デフォルトでは、まず1から2に進み、次に2から3に進み、次に3から4に進み、完了するまで続きます。
ベストアンサー1
次のスクリプトは同様のパラメータを使用し、"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