次の形式の大きなファイルタプルのリストがあります。
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 --