rubyでn桁の0埋め
rubyでゼロ埋めは、たとえば数字の5を3桁に表現したい場合 "%03d"%5
などと書くが、桁数が変動する場合は以下のように書く。
$ ruby -e ' n = 3; num = 5; puts "%0#{n}d"%num ' 005
findコマンドの "-or" オプションはカッコで括る
複数の検索条件を -or
オプションで繋げるとき、以下のように書きがち
$ find . -type f -name *.pdf -or -name *.txt -mtime -3
上記では、 カレントディレクトリの、ファイル名 .pdf か、ファイル名 .txt かつ 最後の修正日が3日前 と、「3日前」が後者の条件「*.txt」にしか掛からない。
-or
オプションで列記したい条件はカッコで括る。
$ find . -type f \( -name *.pdf -or -name *.txt \) -mtime -3
これは
$ find . -type f -name *.pdf -mtime -3 -or -name *.txt -mtime -3
と等価。
カッコにはバックスラッシュをつけること。
以下のようにエラーになる。
$ find . -type f ( -name *.pdf -or -name *.txt ) -mtime -3 -bash: 予期しないトークン `(' 周辺に構文エラーがあります
findコマンドの"-print0"アクションが、条件を複数にすると表示されないのはなぜ?
以下のようにfindコマンドで検索条件が一つの場合はnull文字を区切りとして正常に表示されるが、
$ find . -name "*.txt" -print0 | xargs -0 echo
以下のように検索条件が複数だと、これを実行しても表示されない。
$find . -name "*.txt" -or -name "*.html" -or "*.tmp" -print0 | xargs -0 echo
何が問題なのだろうか。
find(1)のmanページを見たが、いまいちピンとこなかったのです。
sequelでjoinしたテーブルで、カラム名が重なったときにテーブルを指定する方法
db[:a_db].join(:b_db,parent_id: :id).where(Sequel[:b_db][:id]=>id).first
table___column
表記はうまくsqlに変換できなかった。
sequelでgemライブラリ「mysql2」を使いマイグレーションを行う
$ bundle exec sequel -m mg mysql2://user:password/dbname