查找重复的结果

时间:2012-06-12 21:26:10

标签: bash

我有一个脚本,可以在群发文件设备上查找文件。每天,它会搜索大约250,000个文件,并创建一个简单的报告,计算我们收到的文件数量,按发件人($1)和日期($11)细分。

为了提高效率,我在{(1}}中使用我的find()表达式中的加号来将文件名抓取到组中。

‑exec

它工作得很快但重复结果

find . -exec ls '{}' +| awk -F~ '{print $1"\t"$11}'|sort|uniq -c

我做错了什么?我应该使用 9632 ./Reynosa 20120607 9632 Reynosa 20120607 20328 ./Reynosa 20120608 20328 Reynosa 20120608 15354 ./Reynosa 20120609 15354 Reynosa 20120609 删除basename还是有更好的方式?

2 个答案:

答案 0 :(得分:1)

尝试使用ls -d代替ls。从联机帮助页:

-d, --directory
          list directory entries instead of contents, and do not  dereference symbolic links

您当前的命令也列出了目录的条目,然后通过查找再次列出,从而导致重复。

答案 1 :(得分:0)

你应该在find中使用-type f,如

 find . -type f -exec ....