按时间戳计算文件

时间:2012-04-16 19:59:01

标签: awk

我想创建一个简单的报告,计算我们从供应商处收到的文件。每个文件都是根据机场(供应商)货物的名称命名的,即

CUU~<part_number>~20120401.TXT
YVR~<part_number>~20120402.TXT
LAX~<part_number>~20120402.TXT

简而言之,我们收到的文件是从Microsoft Windows服务器以压缩形式发送给我们的。它们被我们的Linux RH服务器删除,我们用unzip -o filename.zip -d target_directory解压缩它们。

我的代码查看解压缩文件的目标目录:

 find . -name '*TXT' -exec ls '{}' \; |awk -F~ '{print $1"\t"$3}'|sort|uniq -c >report.out

输出告诉我自3月22日以来没有从YVR收到任何文件。将搜索范围缩小到find . -name 'YVR*TXT'会产生相同的结果:自3/22以来没有文件。

我与YVR的对手告诉我,他们每天都会将文件FTP给我们,并通过电子邮件将我的日志文件通过电子邮件发送给我证明。我检查了FTP目录,删除了文件,权限都是+rwx。我还检查了包含带有unzip -t zipfilename的TXT文件的zip文件,但未发现任何问题。

我想在我的报告中尝试使用TXT文件时间戳,但我不清楚如何。制作报告的最佳方式是计算白天和机场代码收到的文件数量?

TIA,

克里斯。

PS:我的findprintf,我的系统有stat。我可以使用吗?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

find . -printf '%Ty%Tm%Td~%f\n' | awk -F '~' '{count[$1$2]++} END {for (index in count) {split(index, SUBSEP, a); print a[1], a[2], count[index]}}'

答案 1 :(得分:0)

我的系统管理员刚刚通知我,没有为作为供应商数据的丢弃点的目录和文件正确设置ACL权限。实际上,用户ID显示为10000,而所有用户ID都是字母数字。

将文件的所有权更改为我的用户ID后,我的代码输出现在显示文件确实在3月22日之后发送了......令人困惑。