おはよう、こんにちわ、こんばんわ。今日の自分
今回はワイルドカードの活用法についてだ!
もし間違えていたり加えたほうがいいことありましたらご教示ください・・・
シェルにはワイルドカードと呼ばれる特殊文字を利用してコマンドラインでの作業を効率化できるんだぞ
実践あるのみだ
全ての文字を示す「*」
・例:「.log」のファイルを探している
ファイル数が多いと「log」ファイルを探すのに苦労するだろう??
「*.log」と指定してlsコマンドを実行すれば、拡張子が「.log」のファイルだけが表示されるようになるんだ
下記が実行結果だ↓↓
ちなみに途中までは分かるんだが、その後の綴りが分からない・・・
時などは重宝するぞ
下記のようだ↓↓
下記は例として「secu」まで入力して「*」を使用してみた
何らかの1文字を示す「?」
・「?」は、何らかの一文字を表すワイルドカードだ
・仮に「???」と指定すれば何らかの3つの文字を指定したことになるぞ
例えば「ls images/*.???」と指定すれば拡張子が3文字のファイル全て表示
下記は「.log」に続く文言を指定した場合だ
「?」についても途中までは分かる、そして文字数もわかってる←(あと一歩w)の場合にも使えるぞ
下記の例は「cro」・・・・?の場合だ
1文字を選ぶ「[]」
現ディレクトリからファイル名の先頭が[x][y][z]のいずれかで始まるファイルを一覧表示したいとする
その場合、「ls[xyz]*」と指定して実行するのだ。
文字の間に[-]を挿入すると、その左右の文字の間の全ての文字を指定したことになる。
例えば「[1-9]は[123456789]と指定したことになる。
文字列を選ぶ「{}」
・「{}」はいくつかの文字列候補を用意して、そのどれかにマッチするという条件を指定できる
・候補とする文字列は{}に、カンマ「,」で区切って指定する
例えば拡張子[log.0」と[log.old」を含むファイル一覧を表示したいとしよう
その場合、「ls*.{log.o,log.old}」と指定しt実行すればよい
カンマ「,」の間にスペースを入れてはあかんぞ
(3/17更新)ワイルドカードは、存在するファイルの中でパターンにマッチするファイル名に展開するためのものだが
{}は、ファイルが存在するかどうかに関係なく、指定した(複数の)パターンに展開される
例としてls -l image.{jpg,png} とすると、ls -l image.jpg image.png と展開されて、image.png が存在しない場合 ls がエラーを報告されるぞ(感謝!)
ワイルドカードについては非常に奥が深いようで様々な使い方ができそうだ
分かり次第編集していくのだ。
ありがとうございました。