ファイル内の重複行を見つけてファイル名を使用して出力し、ディレクトリ全体に対してこれを行うにはどうすればよいですか?

ファイル内の重複行を見つけてファイル名を使用して出力し、ディレクトリ全体に対してこれを行うにはどうすればよいですか?

1つのディレクトリに複数のファイルがあり、各ファイルで重複した行を見つけてファイル名を表示して、重複したファイルを識別する必要があります。

私は試した:for i in *.*;do sort $i | uniq -d ; done

重複した行が表示されますが、ファイル名を表示して重複したファイルを識別するにはどうすればよいですか?

上記のコマンドはcsv、.txtファイルでのみ機能します。 .xlsxファイルを確認する他の方法はありますか?

ベストアンサー1

  1. sed- にすでに存在するプレフィックスを使用して、各行にプレフィックスを追加できます$i

これにより、トリックを実行できます。

for i in *.*; do sort $i|uniq -d |sed -e "s/^/$i:/"; done

読みやすくするために拡張されました:

for i in *.*; do
  sort $i | uniq -d | sed -e "s/^/$i:/";
done
  1. xlsxファイルは実際にはファイルのzipディレクトリなので、xlsxを解凍して.xlsxの下の内容を見ることができますfile/xl/worksheets/sheet1.xml。ただし、これらのファイルはxml形式なので、処理する前に解析する必要があります。

おすすめ記事