ディレクトリ内のペアの名前を持つファイルを探す

ディレクトリ内のペアの名前を持つファイルを探す

さまざまなサイズとコンテンツテストセットを使用してテストを実行しています。データファイルは頻繁に追加され削除されます。ファイルリストを自動的に収集する方法を探しています。

すべてのファイルはのサブディレクトリにありますD。テキストファイルに完全なディレクトリと名前を追加する必要があります。ただし、ファイル名は同じですが、拡張子が異なる(つまり...ファイル名は異なりますが、構造化された方法で)「ペア」ファイルを持つファイルのみが必要です。MyFileName.Aだからあれば、ファイルリストに追加したいとMyFileName.B思います。D/.../MyFileName

.Aファイルのないファイルはありますが、ファイルのないファイル.Bはありません。にファイルがある場合は、両方のファイルが同じディレクトリにあります。.B.A.A.B

どんな提案がありますか?

ベストアンサー1

ファイル名に改行文字が含まれていない場合は、次のことができます。

find D -type f \( -name '*.A' -o -name '*.B' \) |
  sed 's/\.[^.]*$//' |
  sort |
  uniq -d >paired_files

.Bこれは、ファイルがあるがファイルがないより一般的な場合に機能します.A

最新のGNUツールを使用してファイル名を処理するには:

find D -type f \( -name '*.A' -o -name '*.B' \) -print0 |
  sed -z 's/\.[^.]*$//' |
  sort -z |
  uniq -dz |
  tr '\0' '\n' >paired_files

おすすめ記事