みなさんこんにちは
フリーランスエンジニアの大久保です。
今回はLinuxコマンドにおけるワイルドカードについて、
自身のメモも兼ねて書かせていただきます。
そもそもワイルドカードとは何か。
私は少し前まで ”*(アスタリスク)” のことだと思っていました。
しかし実際は他にもあります。
以下の表に記載のものがワイルドカードとなります。
* | 任意の0文字以上の文字列。 |
? | 任意の1文字。 |
[ ] | 大カッコ内のいずれかの文字。[ace]であれば a か c か e のどれか。 [0-8]とハイフンを使うと0から8の間のいずれかの数字になる。 [!dfh] とエクスクラメーションマークを使うと d でも f でも h でも無い 任意の1文字を意味する。 |
{ , } | 中カッコ内の,(カンマ)で区切られた文字列のいずれか。 {test.txt,example*.txt}であればtest.txt もしくは hoge(任意の文字列).txt がヒットする。 |
さて、そもそもなぜ急にこれを取り上げたかというと、
ファイル検索系のコマンドを実行する際にこれを知っていると意外に便利だったからです。
lsコマンドなどを使う際のファイル指定時に”{ , }”のワイルドカードを使ったりすることで、
本当に表示したいディレクトリだけを絞ることができ、またコマンド自体も短くなったりします。
例えば以下のようなtest.txtが存在したとします。
/root/aaa/test.txt
/root/bbb/test.txt
/root/ccc/test.txt
この時、”aaa”と”bbb”配下のファイルのみ確認したいという場合に使うとスマートにコマンドが書けます。
ls -l /root/{ aaa , bbb }/test.txt
スマートだし見やすいですね。
grepやfindでも同じように使うことができます。
ぜひみなさんも活用してみてください。