タプルから欠落しているファイルを印刷する

タプルから欠落しているファイルを印刷する

次の形式の大きなファイルタプルのリストがあります。

A_1.txt
A_2.txt 
B_1.txt 
B_2.txt 
C_1.txt  <<
D_1.txt
D_2.txt
E_1.txt
E_2.txt

ディレクトリに。ご覧のとおり、C_2.txt私のリストにはありません。これらのファイルのうち、「パートナー」が見つからないファイルを見つけて、それをbash修正するための賢い方法を見つける必要があります。

x=$(pwd)
find $x -type f -printf '%f\n' | sort | uniq -c

リストの最初の1文字のみを検索し、その最初の文字で始まるファイル数を印刷するように{0:1}を含めます。

予想出力:

2  A
2  B
1  C
2  D
2  E

または(理想的な)期待される出力は次のとおりです。

C_1.txt

ベストアンサー1

ファイル名を繰り返し、プレフィックス(最初の文字列の前の文字列_)を抽出し、そのプレフィックスで始まるファイル数を確認します(私はそれを使用しましたが、set配列を使用して長さを確認することもできます)。
1つしかない場合は、名前を印刷してください。

for f in ./*.txt; do
n=${f%%_*}
set -- "${n}"_*
[ $# -eq 1 ] && printf '%s\n' "${f}"
done
set --

おすすめ記事