忍者ブログ
趣味と実益を兼ねて将棋のプログラムを作ってみたいなと思っている私の試行錯誤や勉強したことを綴ってゆく予定です。 一番の目的はソフトウェア設計やオブジェクト指向に慣れること ・・・だったのですが、元々の興味や電王戦に触発されたこともあり、AI製作も目指してみたいと今は考えています。 ※はてなに移転しました。
カレンダー
12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
プロフィール
HN:
cwron
性別:
男性
自己紹介:
将棋の腕前はムラがあるのでなんとも言えませんが、将棋ウォーズや81Dojo基準だと約三段てことになってます。リアルで指す機会が希少です。
Share
ブログ内検索
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

floodgateで入手できる棋譜はアーカイブされてて非常に利用しやすいです。日付ごと、対局者ごとにまとめられているのがありますが、リンクを1個1個クリックしていくのがあまりにめんどいので、ひとまず2012年、2011年分の1年区切りのアーカイブを落としてみたら、1年の対局数が10万くらいあってlsコマンドがもの凄い遅い。だいたいは標準出力に吐いてるせいだろうし棋譜の学習にはそこまで差し障らないかと思うけど、1ディレクトリに10万もファイルがあるのは個人的に気持ち悪いなと思い、スクリプト使って月別に一括分類したいなーって考えた時の話。


拍手[0回]

1年分のアーカイブを展開し、そのディレクトリの中に入って使うことを想定してます。 しょぼいですけどソースは以下のような感じになります。2012年のアーカイブを展開して"2012"ディレクトリに棋譜が入ってる場合しか考えてないコードなので、ソース後半に現れる"2012"のディレクトリ名はを適宜直す必要があります。

#!/bin/bash
for i in `seq 1 12`
do
	dir=""
	if test $i -lt 10
	then
		dir='0'$i
	else
		dir=$i
	fi
	echo "\"mkdir $dir\""
		
	mkdir -p $dir
	ls|grep -e "$2012""$dir""[0-9]\{8\}.csa"|xargs mv -t $dir
done

mvのオプションとか正規表現とかシェルスクリプトとか、そこまで手に馴染んでなかったのでいい練習になりました。普段あんまり使わない筋肉を使って運動したみたいな感じで。

参考

シェルのfor,if文はちょいちょい忘れてしまう。seqとかtestとかfiとか。

PR
お名前
タイトル
文字色
URL
コメント
パスワード
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Copyright © nounai.output(spaghetiThinking); All Rights Reserved
Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
忍者ブログ / [PR]