findで一意の値を見つける

findで一意の値を見つける

サブディレクトリもあるディレクトリで一意のファイルを見つけたいと思います。

特定の種類のファイルがあります.lib

.lib異なるサブディレクトリに同じファイルがあります。.lib私のホームディレクトリで一意の名前を持つファイルのリストを見つける必要があります。これを行う方法はありますか?

現在私が使用している

find -name "*.lib" > lib_file_list

ただし、一部の.libファイルが複数のサブディレクトリにあるため、重複した結果が発生します。 CSHを使用しています。

答え1

GNUツールの使用:

find . -name '*.lib' -print0 | awk -v RS='\0' -F/ '! seen[$NF]++'

答え2

これが私がやろうとしていることです。

find -name '*.lib' -printf '%f\n' | sort | uniq > lib_file_list

覚えておくべきいくつかの点は次のとおりです。

  • これはファイルのフルパスを提供しません。 (とにかく、あなたの質問にいくつかのルートを削除する必要があるので、それは重要ではないと思います。)
  • ファイル名に改行文字があると失敗します。
  • もちろん、これはGNUツールを使用できると仮定します。

関連情報