Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
bash のbrace 展開で文字列を置換する 文字の置換は、bashはとても楽ちんである。 NAME=www.example.com echo ${NAME//./_} # www_example.com echo ${NAME//./_} # www_example_com これをもう少し掘り下げる。 bash でファイル名から拡張子を取出す方法 ファイル名から拡張子を取出すのはカンタンでした。 path=/etc/apache2/httpd.conf extension=${path##*.} #=> conf 魔法の記述方法 ${varname##*.} を使うと 手軽に拡張子を取得できる。 拡張子を書き換える方法 拡張子を書き換えるには、変数の書き換えを使えば直ぐ出来る。 f_name=httpd.conf txt_name=${f_name/.*/.txt} #=> httpd
■ 著者名がない そういうケースもあるよな。 なんで名無しのコレクションができるのかと思ったら当たり前だ。 その時はファイル名に著者名も入れとけば、 いちいち設定しなくてもいいじゃんと思っていたわけで。 こういうときはディレクトリ名なら問題ないわけか。 著者名がない場合はディレクトリ名とすればいいわけだが、 そんな処理をsqlで書くのが面倒だ。 % sqlite3 books.db 'select ifnull(author,substr(file_path,instr(file_path,"/")+1,length(file_path)-length(file_name)-instr(file_path,"/")-1)) from books' やっぱ著者名をつけ直したほうがよさげだ。 ■ sqlite3のtrigger 今日もSony Reader。triggerはお手軽だけど設定した
zsh には編集子(modifiers)というのがある。 こいつを使うと、グロブ展開(ワイルドカード展開)の結果をいろいろと編集できるようになる。 簡単な例 とりあえず例を見てもらったほうが早いと思う。 # 今このディレクトリにいる % pwd /home/mollifier/tmp # ファイルが2つある % echo * fuga.txt hoge.txt # :a は編集子の一種で、フルパスに変換する % echo *(:a) /home/mollifier/tmp/fuga.txt /home/mollifier/tmp/hoge.txt # :r も編集子の一種で、ファイルの拡張子の部分を取り除く % echo *(:r) fuga hoge # 並べて書けば2つ以上使うこともできる % echo *(:a:r) /home/mollifier/tmp/fuga /home/mo
zmv で「${(l:e::s1::s2:)param}」を利用する。eは全体の長さ、s1は埋める文字、s2はparam左に挿入する文字列であり、s1とs2はオプションである(s1省略時はスペース埋め、s2はs1がある時のみ使用可能)。 zsh で以下を評価すればだいたいの挙動がわかると思う。 n=1 echo ${(l:10:)$((n))} echo ${(l:10::0:)$((n))} echo ${(l:10::0::5:)$((n))} さて、0埋め連番リネームだが、これをzmvの第2引数に使えばいい。jpgファイルを1から始まる3桁0埋めしたいなら以下のようにできる。ファイル名を辞書順で並べた上から、001.jpg、002.jpg、…… というファイル名にリネームされる。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く