2012-04-16 2 views
0

サプライヤから受け取ったファイルをカウントする簡単なレポートを作成したいと考えています。空港(サプライヤー)商品は一言で言えば、すなわちタイムスタンプでファイルをカウントする

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

から出荷された後、各ファイルの名前は、私たちが受け取ったファイルは、Microsoft WindowsサーバーからZIP圧縮形で私たちに来ます。私たちの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、

Chris。

PS:はprintf、私のシステムはstatです。いずれか使用できますか?

+0

'find。 -name 'YVR * 201203 * .TXT''は出力を出力しますか? 'find'のあなたのバージョンは' -printf'機能を持っていますか?あなたのシステムに 'stat'コマンドがありますか? –

+0

はい、 'find YVR ...'は同じ数のファイルを出力します。 'stat'は' file'はできないと教えてくれるでしょうか? – Chris

+0

「同じローカウント」ですか?私はあなたが何も得ていないという印象の下にいました。 'file'コマンドはヒューリスティックを使用しているファイルのタイプを推測します。その他の情報は提供していません。しかし、私はあなたが「発見」を意味すると推測します。あなたの 'find'が' -printf'を持っていれば 'stat'と同じ情報を得ることができます。 –

答えて

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]}}' 
0

を私のシステム管理者は、ちょうどそのACLの権限が正しく取引先データのドロップポイントとして機能するディレクトリやファイルに設定されていなかった私を知らせました。実際、ユーザーIDは10000と表示されましたが、すべてのユーザーIDは英数字です。

ファイルの所有権を自分のユーザーIDに変更した後、私のコードの出力は、ファイルが3月22日以降に実際に配信されたことを示すようになりました....

関連する問題