我想在目录中找到唯一的文件,该目录也有子目录。
文件有特定类型.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 工具。