サブディレクトリもあるディレクトリで一意のファイルを見つけたいと思います。
特定の種類のファイルがあります.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ツールを使用できると仮定します。