Question

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

The usual filenames look like

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

I suppose the command above should give non-duplicated result of file names like Zoe only for once, but it turns out not so.

Why? and how should I write to get the desired result?

Was it helpful?

Solution

uniq only detects duplicates if they're in consecutive lines. The usual idiom is to sort | uniq to ensure that any duplicates will appear together.

OTHER TIPS

uniq requires the duplicates to be adjacent, which means you need to sort the input, which means you might as well use sort -u;

find 2012 -type f | cut -d/ -f5 | sort -u
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top