
現在、次のファイルディレクトリがあります。
abcd.txt
abcd_.txt
qrst.txt
qrst_.txt
wxyz.txt
wxyz_.txt
理論的には、abcde_.txtのすべての行はabcd.txtに含める必要があり、qrst_.txtのすべての行はqrst.txtに含める必要があります。 2つのファイルを比較して個別にテストすることもできますが、ディレクトリ全体に対してこれを行うより効率的な方法を見つけようとしています。
このような状況でファイルのペアが多いが、各ファイルがどの文字列で始まるかが事前にわからない場合は、2つの関連ファイルの各セットを一度に繰り返し処理する方法はありますか?
答え1
名前のリストにあります*_.txt
。 2つのファイルを_.txt
比較するには、名前から.txt
。
for f1 in *_.txt; do
f2="${f1%_.txt}.txt"
compare "$f1" "$f2"
done
答え2
file.txt
それぞれにファイルがあることをすでに知っている場合は、次のようにfile_.txt
ファイル_
を区別します。
次のコードが機能します。
files=(`ls | grep -v "_"`)
for f1 in ${files[@]}
do
f2=`echo $f1 | sed -r 's/.txt/_.txt/g'`
diff $f1 $f2
done