从 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 工具。

相关内容