色々なことを、気の向いたままに。
事象境界線
スポンサーサイト
--年 --月 --日 (--) --:-- | 編集
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
青空、曇天、雲の向こう
2009年 05月 14日 (木) 21:45 | 編集
20090514214500

#まだ整理前の情報。
#どろどろ使いまくり。
#プログラムがちゃんと組めるようになりたいなぁ


青空文庫のファイル名のリネームについては他の人も考えていたようです。
http://d.hatena.ne.jp/sskr31/20080709/p1

やっぱりみんなファイル名を変えたいと思っているんだよね。

で、ここにある方法を使って同じことができても仕方がないので、しつこくスクリプトで頑張ります。

現在いるカレントのディレクトリにzipとtxtというディレクトリがあるとして、
zipには取得済みの青空文庫図書(zipファイル)をおき、txtには解凍・ファイル名変更したテキストファイルが入る予定。


http://www.aozora.gr.jp/index_pages/list_person_all.zip
から公開中の全作品リストをダウンロードし、booklist.csvにリネーム。
中身を編集し、

作品ID,著者名,作品名,著者名_作品名
(ただし著者名_作品名は空白をすべて「_」で置換しておく)

エクセルでのやり方はググレば出てくるので割愛。


改行コードと文字コードの変換(必要な人だけ)。
改行コードは、

od -c file

で調べられます。今回は、\r\nだとNGなので\nにする感じで。
ついでに文字コードもEUCに。

nkf -SeLu source_file > output_file

改行コードの変換(削除)だけなら、
tr -d "\r" <file> outfile
でもCR+LFからLFに変換可能。


リストにないzipファイルを削除。
#!/bin/sh
export LANG=ja_JP.eucJP

file_name=(`ls zip |cut -d" " -f1`)

for i in ${file_name[@]}
do
file_number=`echo $i |cut -d"_" -f1`
old_name=`unzip -l zip/$i |grep txt |cut -c29-`
new_name=`grep "^$file_number," booklist.csv |cut -d"," -f4-`

if [ "$new_name" = "" ]; then
rm zip/$i
fi

done


ファイル名の変換。

#!/bin/sh
export LANG=ja_JP.eucJP

file_name=(`ls zip |cut -d" " -f1`)

for i in ${file_name[@]}
do
file_number=`echo $i |cut -d"_" -f1`
old_name=`unzip -l zip/$i |grep txt |cut -c29-`
new_name=`grep "^$file_number," booklist.csv |cut -d"," -f4-`
unzip zip/$i -d txt
mv "txt/$old_name" "txt/$new_name"
done


しかし、これでもまだ変換できるものと変換できないものがある・・・・・・エラーが出ちゃうんだよね。
ど~しようかな・・・・・・
シェルスクリプトだけではそろそろ限界かな?


参考URL
http://blog.livedoor.jp/akf0/archives/51600360.html
http://cns-guide.sfc.keio.ac.jp/2004/2/4/12.html




約束の場所。
Comment
この記事へのコメント


コメントを投稿する
URL :
comment :
password :
secret : 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright (C) 事象境界線 all rights reserved.
designed by polepole...

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。