split処理用シェルスクリプト2009年10月28日 00時39分25秒

最近の開発対象の検証のためにprintf()で膨大なログを出力しました。それが、なんと、GBオーダのサイズになってしまいました。

テキストエディタで開くのに時間がかかったり、全くだめだったりしてしまい、ログを採っても確認できない事態が発生したのでした。

というわけで、膨大なサイズのログを分割するためにsplitコマンドを使いました。 但し、素のsplitコマンドは以下のような使い物にならない点があります。

  • 分割ファイルの末尾が「xa」..「xb」のように文字並びが固定にならない
  • 拡張子が結局消えてしまう
  • タイムスタンプが元のファイルのタイムスタンプではなく実行時のタイムスタンプになってしまう

以下のシェルスクリプトで対応しました。

#!/bin/sh
# split $1 $1.
echo $*
dir=`pwd`
for file in $*
do
        fp="$dir/$file"
        bn=`basename $fp .txt`
        pre=$bn"_"
        echo $pre
        split -l 100000 -a 3 $file $pre
        for ff in `ls *$pre*`
        do
                mv $ff $ff.txt
                touch -r $file $ff.txt
        done
done

このスクリプトだと元のファイル名の並びを識別できた上に、拡張子を再度付与することが出来ます。 但し、処理の簡略化のために拡張子は「.txt」ということで固定で処理しています。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
このブログでは「組込み」と「組み込み」のどちらを使っている?

コメント:

トラックバック

このエントリのトラックバックURL: http://kumikomi.asablo.jp/blog/2009/10/28/4661278/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。