【发布时间】:2014-04-10 21:45:29
【问题描述】:
这是查找命令:
find . -name 'VPN_CALLRECORD_20140409*' -type f| xargs ls -lhrt |awk '{print $9}' > log.txt
这是我要查找的文件集,这些文件可能是 7000 个被定向到“xargs”的文件,我只是列出了第一部分、中间部分和最后一部分
-rw-rw-r-- 1 see seegrp 100K Feb 12 00:00 VPN_CALLRECORD_20140409000000_000760000.txt
-rw-rw-r-- 1 see seegrp 193K Feb 12 00:01 VPN_CALLRECORD_20140409000000_000760001.txt
.
.
-rw-rw-r-- 1 see seegrp 193K Feb 12 10:03 VPN_CALLRECORD_20140409174500_000764500.txt
.
.
-rw-rw-r-- 1 see seegrp 95K Feb 12 23:59 VPN_CALLRECORD_20140409235500_000766488.txt
-rw-rw-r-- 1 see seegrp 103K Feb 12 23:59 VPN_CALLRECORD_20140409235500_000766489.txt
稍后这是用于压缩的 tar:
tar -czf cdr_backup.tar.gz -T log.txt
使用这种方式做日志时会出现问题,因为 log.txt 文件上的结果没有正确排序,我认为这是由于某些 xargs 限制
代码:
number=$(more log.txt |wc -l)
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++">>log_after_cdr_backup.txt
echo "Start Time : $DATETIME">>log_after_cdr_backup.txt
echo "Tar file created: $FILE">>log_after_cdr_backup.txt
echo "Tar file contains $number CDRs backed up successfully">>log_after_cdr_backup.txt
firstline=$(head -n 1 log.txt)
echo "from this sequence $firstline ">>log_after_cdr_backup.txt
lastline=$(tail -1 log.txt)
echo "to this one $lastline">>log_after_cdr_backup.txt
echo "Finish Time : $FINISHTIME">>log_after_cdr_backup.txt
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++">>log_after_cdr_backup.txt
生成的输出:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Start Time : 20140410 15:16:24
Tar file created: cdr_backup.tar.gz
Tar file contains 7720 CDRs backed up successfully
from this sequence ./VPN_CALLRECORD_20140409000000_000741343.txt
to this one ./VPN_CALLRECORD_20140409174500_000764500.txt
Finish Time : 20140410 15:23:42
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
请注意,最后一个序列不是应该的
VPN_CALLRECORD_20140409235500_000766489.txt
为什么?我不确定,我试图在 log.txt 文件中对结果进行排序,所以这个
lastline=$(tail -1 ${TEMPFILE})
可以工作,但不能,你知道为什么吗?
【问题讨论】: