現在ソースを自動で比較するツールを作成しています。
2つのディレクトリの同一順番のファイル同士をdiffで差分を取り、ファイル名_diffの様な名前で結果を別ファイルに出力しようと考えております。
sh
1#!/bin/sh 2 3#比較元①ファイル一覧リスト(パス付) 4find ./bk* -type f >bkfile.txt 5#比較元➁file一覧リスト(パス付) 6find ./new* -type f >newfile.txt 7#ファイル名一覧リスト 8find ./bk* -type f | awk -F/ '{print $NF}' >filename.txt 9 10#比較元ファイル①と➁をカンマ区切りで結合(後のcutコマンドで使用) 11paste -d "," bkfile.txt newfile.txt >join.txt 12#各行末に , を挿入(後のcutコマンドで使用) 13sed -i 's/$/,/g' join.txt 14 15#各行に比較する二つのファイルがカンマ区切りで記載されている状態(join.txt) 16#各行を読み取りループ 17while read row;do 18 19 #ファイル名ループ 20 while read name;do 21 22 column1=`echo ${row} | cut -f 1 -d ","` 23 column2=`echo ${row} | cut -f 2 -d ","` 24 25~~~省略(様々なパターンでdiff処理)~~~~~~~~ 26 27 diff -y $column1 $column2 >{name}_diff.txt 28 29 done<filename.txt 30 31done<join.txt 32
差分を取り、出力するdiffのファイル名(${name}_diff.txt)を設定したいです。
2重ループで一旦書いてみましたが、うまく行きませんでした。
※考えてみれば当たり前なのですが、ファイル名一覧でループした後、更に比較ファイル一覧でループするからです。
diffを取る際に出力するファイル名を、事前に用意したファイル名一覧(filename.txt)と紐づけて出力する方法はないでしょうか。
回答1件
あなたの回答
tips
プレビュー