2013-09-23 49 views
0
find ./2012 -type f | cut -d '/' -f 5 | uniq 

常用的文件名看起来像uniq的为什么不给非重复结果

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

我想上面的命令,应该给像佐伊仅有一次的文件名不重复的结果,但它事实并非如此。

为什么?我该如何写才能获得理想的效果?

+2

'uniq'是逐行比较的,所以如果你弄错了,那么你的'cut'就不会正确过滤掉相关的部分。还有可能会出现不可见的空白(制表符,空格等等)。 –

回答

3

uniq只检测连续行中的重复项。通常的成语 是sort | uniq,以确保任何重复出现在一起。

+1

你也可以使用'-u'选项来进行'排序',让它消除它。 – Barmar

1

uniq要求重复是相邻的,这意味着您需要对输入进行排序,这意味着您不妨使用sort -u;

find 2012 -type f | cut -d/ -f5 | sort -u 
相关问题