【发布时间】:2016-06-28 14:54:07
【问题描述】:
我有一个基本上每天运行的 shell 脚本,用于创建前一天的文件列表并计算文件中的请求数。
为了创建文件列表,我使用find 命令如下
find ${Search_Path} -type f -newer ./start-time \! -newer ./end-time |egrep '\.5500\.|\.5000\.' >IncomBQR.txt
过去我遇到一个问题,它似乎输出多行
所以我尝试通过创建如下的 uniq 列表来修复它。
sort -u IncomBQR.txt>IncomBQR1.txt
cat IncomBQR1.txt>IncomBQR.txt
rm -f IncomBQR1.txt
但几个月后也失败了。你能帮我调试一下吗?
当它运行我得到的命令是
${Search_Path}/file1
${Search_Path}/file1
我应该只为“file1”获得一行
但奇怪的是,当我手动运行时,它只找到 1 行。
【问题讨论】:
-
我认为我们需要一些文本示例。但是由于独特的排序不会清除重复项,因此您可能会有肉眼看不见的空白空间,但很容易被 wc(字数统计)或类似内容检测到。
-
@komenten:感谢您提供响应文件名如下:
/gtpfssharepath/ORGXXXX/processed/billRequest/myrquest-20160312.DAT在我的输出列表中看起来像这样/gtpfssharepath/ORGXXXX/processed/billRequest/myrquest-20160312.DAT |35 /gtpfssharepath/ORGXXXX/processed/billRequest/myrquest-20160312.DAT |35我想知道问题可能是由于 GPFS 文件系统引起的?跨度> -
也许 find 也在
IncomBQR.txt中查找并添加该文件的 grep-results。尝试将查找输出重定向到另一个目录树中的某个位置,例如/tmp/IncomBQR.txt。 -
如果手动运行
find只返回一次文件(应该如此),那么您的脚本就有问题。虽然对文件进行后处理可能会解决问题,但并不能解决问题。 -
Search_Path 是否包含多个目录条目?重复目录名称将导致重复输出。尝试调试 echo "Searcn_Path=$Search_Path;";