キッズプレート、パスタおかわり

プログラミングやデジモノについてあれこれ
--.--.-- --:--|カテゴリ:スポンサー広告| コメント(-)

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2014.04.22 23:34|カテゴリ:Perlコメント(0)

[Perl]連番出力ワンライナーでサンプルファイル生成


 こんちゃー、久し振りに更新。今日はちょいネタでいきますよー。なんかアクセス解析見てたら「連番テキスト スクリプト」なんて感じでいくつかアクセスがあったのでこんなんできますよーっていうやつね。

 連番テキストの生成を Perl のワンライナーでやってみます。環境は OS X 、とくにこれといって何もなくこいつを Terminal で実行していください。

perl -e 'for (1..10) {print $_ . "\n"}'

 へーい、これで1〜10までの連番が表示されましたね。ただこれだけだと面白みに欠けるのでこいつを使ってサンプルファイルを作ってみましょう。

 プログラミングの動作テストをやっているとたまにサンプルファイルが欲しくなったりします。しかも中身はどうでも良くって「拡張子txtがついてるファイルが100ファイル欲しい」なんて時。まあコピー元ファイルを一個作ってコピペコピペで作ってもいいんですが、数百ファイル以上になれば大変だし可能ならファイル名が連番になってたりするとテストもしやすい。

 さてそこで考えてみると OS X には Finder 上で空のファイルを作るって処理が無いんですよね。そんな時に便利なのが Terminal で実行する touch コマンドです。まあ、Terminal を使うのが便利なのか? という疑問はありますが今回の処理ではこいつを使います。

 touch コマンドは指定された文字列で空ファイルを作成することができるコマンドです。本来はタイムスタンプ等を修正するコマンドなのですが存在しないファイル名を指定すると空のファイルを作成することができます。

 それでは先ほどの連番を出力するワンライナーと touch を合わせてサンプルファイル生成する処理を行ってみましょう。

 まず作成するファイル名を決めます今回は test[連番].txt という名前のファイルを作成することにしましょう。一番最初に紹介したワンライナーを以下のようにして実行してみます。

perl -e 'for (1..10) {print "test" . $_ . ".txt\n"}'

 うまく連番ファイル名のテキストが生成されました。え? 数字部分の桁を揃えたい? くー、そんな時には printf を使っちゃいます。

perl -e 'for (1..10) {printf("test%04d.txt\n",$_)}'

 わお、ばっちり。それではこの出力結果を touch コマンドに与えてみましょう。それにはバッククオートという記号を使用します。日本語キーボードの場合は「shift + @」で入力できる文字です。これはコマンドを展開して実行結果の文字列を返してくれるという機能を持っています。touch に値を渡すには次のようにします。

touch `perl -e 'for (1..10) {printf("test%04d.txt\n",$_)}'`


 うまくファイルが作成できましたか? 本日はこれにて失礼〜♪
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

ひらくん Author:ひらくん
どもども、ひらんくんどす。
日々まったり過ごしております。
仕事はDTP関連のスプリクト&アプリケーション開発。
Follow happyscript on Twitter

ブログ内検索



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