ファイル名に基づいてディレクトリファイルを比較する

ファイル名に基づいてディレクトリファイルを比較する

現在、次のファイルディレクトリがあります。

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

関連情報