Robocopyのログのサマリー部分が見づらいので、整形してみました。
スクリプト名は、logreport.sh です(適当に直して下さい)。
#!/bin/sh << COMMENTOUT 2019/09/04作成 robocopyログファイル(Windows2016版)のサマリー部分の整形スクリプト フォルダ"log"内のrobocopy*.logをUTF-8に変換し、"report"フォルダにサマリー部分を出力します 要 nkf 処理前のlogの最終部分 ------------------------------------------------------------------------------ 合計 コピー済み スキップ 不一致 失敗 Extras ディレクトリ: 18571 0 18571 0 0 0 ファイル: 157425 152728 4697 0 0 0 バイト: 299399096023 292980525070 6418570953 0 0 0 時刻: 0:15:20 0:10:48 0:00:00 0:04:32 速度: 451855700 バイト/秒 速度: 25855.390 MB/分 終了: 2019年xx月xx日 xx:xx:xx 処理後のlog ------------------------------------------------------------------------------ Total Copied Skipped Mismatch FAILED Extras Dirs : 18571 0 18571 0 0 0 Files : 157425 152728 4697 0 0 0 Bytes : 299399096023 292980525070 6418570953 0 0 0 Times : 0:15:20 0:10:48 0:00:00 0:04:32 速度: 451855700 バイト/秒 速度: 25855.390 MB/分 終了: 2019年xx月xx日 xx:xx6:xx 使い方 カレントディレクトリに"log"というフォルダを作り、robocopyのログファイルを格納します カレントディレクトリに"report"というフォルダを作っておきます WSLを起動し、カレントディレクトリに移動します ./logreport.sh をキックします ※もともとは Powershell で作りましたが、 処理ファイル数が多いと不安定になるようなので、 シェルスクリプトで作り直しました ※事前に、WSLにnkfをインストールしておいて下さい COMMENTOUT tmpfile=$(mktemp) tmpfile2=$(mktemp) tmpfile3=$(mktemp) # ログファイルの文字コードを UTF-8 にする cd log echo ログファイルをUTF-8化しています... find . -name 'robocopy*.log' -type f -print0 | xargs -0 nkf -u -Lu --overwrite -w # ログファイルの最後の15行目を取り出し、 # ----------で始まる行以降を取り出し(ファイルが短くて-----が2行入ってしまった場合は2番目以降) # サマリー行の全角文字を半角文字に変換する echo ログファイルを整形出力します for fname in `find ./robocopy*.log` do echo $fname # 各ログファイルの末尾15行を取り出す tail -15 $fname > $tmpfile if [ `grep -c '^----------' $tmpfile` -eq 2 ] ; then # ^---------- が2行ある場合は、最初の行を潰す sed '0,/^----------/ s/^----------/xxx/' $tmpfile > $tmpfile3 # ^---------- 以降を出力 fname1=${fname#.\/robocopy_} echo ${fname1%.log} > $tmpfile2 sed -n '/^----------/,$p' $tmpfile3 >> $tmpfile2 rm $tmpfile3 else # ^---------- 以降を出力 fname1=${fname#.\/robocopy_} echo ${fname1%.log} > $tmpfile2 sed -n '/^----------/,$p' $tmpfile >> $tmpfile2 fi # サマリーの全角を半角に変換 sed -e 's/^ ディレクトリ:/ Dirs : /g' \ -e 's/^ ファイル:/ Files : /g' \ -e 's/^ バイト:/ Bytes : /g' \ -e 's/^ 時刻:/ Times : /g' \ -e 's/ 合計/Total/g' \ -e 's/ コピー済み/Copied/g' \ -e 's/ スキップ/Skipped/g' \ -e 's/ 不一致/Mismatch/g' \ -e 's/ 失敗/FAILED/g' \ $tmpfile2 > ../report/$fname done rm $tmpfile rm $tmpfile2
以上です。