タグ

zshexpnに関するn2sのブックマーク (9)

  • zshの地味に便利なファイル名グロブ(glob) - Qiita

    % grep 検索文字列 README_{en,ja}.txt # grep 検索文字列 README_en.txt README_ja.txt と同じ % mv src/dir/{tmp,file}.txt # mv src/dir/tmp.txt src/dir/file.txt と同じ % grep 検索文字列 **/*.{css,html} # grep 検索文字列 **/*.css **/*.html と同じ {,}は正確にはファイル名グロブではなくブレース展開と呼ばれる。ファイル名グロブは存在するファイル名に置き換わるが、ブレース展開はファイルとして存在するかは関係なく、単純に文字列として展開する。 事前に展開して確認 Tabでファイル名グロブが展開されて実際のファイル名に置き換わる。

    zshの地味に便利なファイル名グロブ(glob) - Qiita
    n2s
    n2s 2016/10/10
    Tabで展開しちゃった後でもC-x uで戻せる
  • bashのパラメータのブレース展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換 - それマグで!

    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

    bashのパラメータのブレース展開での拡張子・ディレクトリ名・ファイル名の取得・拡張子の置換 - それマグで!
  • zshのfor文は強かった - Qiita

    ってやれば同一階層内かそれより深いファイル全てのファイル名を表示してくれる。 ファイル名変数 以上3つのfor文はすべて$fにファイル名が代入されている。 当に便利なのはここから。 こうすると、同一階層の◯◯.txが全て◯◯.txtにリネームされる。 変数オプション 上記スクリプトの場合を例にとると、$fの後に:rをつけることでファイル名の名前部分(拡張子以外)が取得できる。 試してみたところ以下のオプションが確認できた。 ※カレントディレクトリは/root/pwd、対象ファイルは/root/pwd/directory/File 1.extとします。 オプション 内容 結果

    zshのfor文は強かった - Qiita
  • zshのブレース展開 - jarp,

    ■ 著者名がない そういうケースもあるよな。 なんで名無しのコレクションができるのかと思ったら当たり前だ。 その時はファイル名に著者名も入れとけば、 いちいち設定しなくてもいいじゃんと思っていたわけで。 こういうときはディレクトリ名なら問題ないわけか。 著者名がない場合はディレクトリ名とすればいいわけだが、 そんな処理を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とbashでは変数の単語の分割ルールが違う - Qiita

    変数の値にスペースが含まれているとき、zshとbashで単語の分割ルールが違う。zshでシェルスクリプトを書くときに注意が必要になるので紹介する。 例1: 変数をコマンドの引数に指定する 変数の値にスペースを入れて、それをtouchコマンドの引数にしてみる。 zshの場合は変数の値が1つの単語として扱われる。なのでfile1 file2という1つのファイルが作成される。 % filename="file1 file2" % touch $filename % ls -l -rw-r--r-- 1 mollifier mollifier 0 12月 4 10:36 file1 file2

    zshとbashでは変数の単語の分割ルールが違う - Qiita
  • zsh で編集子を使ってグロブ展開とかをその場で編集する - Qiita

    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

    zsh で編集子を使ってグロブ展開とかをその場で編集する - Qiita
  • zsh で find を使わずに簡単にファイルを絞り込む - Qiita

    ファイルの種類、タイムスタンプなんかで条件を指定してファイルを絞り込みたくなる時があるだろう。例えばこんな場合だ。 通常ファイルだけを別の場所に移動させる(ディレクトリはそのまま残す) シンボリックリンクだけ削除する タイムスタンプが1日以上古いファイルだけ削除する こういうときは普通は find コマンドでファイルを探すんだけど、zsh の「ファイル修飾子」を使うと1行で簡単にできるようになるので紹介する。 ファイル修飾子とは 「ファイル名修飾子」とは、ファイル名指定の後に付けるファイルの種類で絞り込みを行うための記号のこと。 例えばこんな感じ。

    zsh で find を使わずに簡単にファイルを絞り込む - Qiita
    n2s
    n2s 2013/12/01
    *()についてわかりやすくまとまっている / ( の後でTAB押すとヘルプ表示 / 「その他細かいことは man zshexpn の「FILENAME GENERATION」->「Glob Qualifiers」」
  • ${name-word}と${name:-word}の違い - Qiita

    ${name-word} と ${name:-word} は両方変数 $name にデフォルト値を設定するのに使います。 $name が未定義の場合、両方とも word を返します。

    ${name-word}と${name:-word}の違い - Qiita
  • zsh で0埋め連番リネーム - Qiita

    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、…… というファイル名にリネームされる。

    zsh で0埋め連番リネーム - Qiita
    n2s
    n2s 2013/07/12
    zshexpn(1)の「:expr::string1::string2:」に説明あり / printfはあるのにsprintfはないのは残念…え、$(printf)使えと?
  • 1