为什么uniq不给出非重复的结果

时间:2013-09-23 18:18:20

标签: shell unix pipe uniq

find ./2012 -type f | cut -d '/' -f 5 | uniq

通常的文件名看起来像

./2012/NY/F/Zoe
./2012/NJ/M/Zoe

我认为上面的命令应该只给出一次像Zoe这样的文件名的非重复结果,但事实证明并非如此。

为什么呢?我该如何写以获得所需的结果?

2 个答案:

答案 0 :(得分:3)

uniq仅在连续行中检测到重复项。通常的习语 是sort | uniq以确保任何重复项一起显示。

答案 1 :(得分:1)

uniq要求副本相邻,这意味着您需要对输入进行排序,这意味着您也可以使用sort -u;

find 2012 -type f | cut -d/ -f5 | sort -u