プログラムを何度も実行しましたが、出力が(少し)不確実でした。毎回出力をファイルに印刷します。私は現在多くのテキストファイル(95,034)を含むディレクトリを持っており、そのうち4つの異なる固有の出力があるかもしれません。次の形式で出力を見たいです。
A (50,000)
B (30,000)
C (10,000)
D (5,034)
しかし、A、B、C、D(4つの可能な出力)がどのように見えるかを見るだけで良いでしょう。 90,000個のファイルを手動で重複排除する時間はありません。それでは、ディレクトリ内の一意のテキストファイル数をどのように計算または一覧表示しますか?ありがとうございます!
ベストアンサー1
私はGNUの熱心なファンですdatamash
(https://www.gnu.org/software/datamash/)。以下は、私が作成し、このコマンドを実行したシミュレーションファイルセットの出力例です。
$ md5sum * | datamash -W -s -g 1 count 2 -f
5591dadf0051bee654ea41d962bc1af0 junk1 27
9c08c31b951a1a1e0c3a38effaca5863 junk2 17
f1e5cbfade7063a0c4fa5083fd36bf1a junk3 7
ハッシュ値が5591...のファイルが27個あります。その一つは「junk1」です。 (同様に、「junk2」と同じファイルが17個、「junk3」と同じファイルが7個あります。)
-W
フィールド区切り文字としてスペースを使用することを示します。-s -g 1
フィールド1(ハッシュ値など)に基づいてソートとグループ化を示します。フィールド 1 であってもcount
フィールド 2 であっても構いません。
-f
「フル入力行を印刷します」と表示されます。ここには珍しい点があります。集計結果を印刷すると、行全体のみが印刷されます。最初各グループで行を探します。この場合、完全ではなく各反復セットに関連するファイル名の1つを提供するので、うまく機能します。