Linuxコマンドで便利なクエスチョンマーク(?)の使い方

Linux

どうも未経験でシステム業界に転職したキーです。
今回はLinuxでクエスチョンマーク(?)の使い方を業務で学び、これから多用することが多そうなのでここで備忘録用に残しておこうと思います。



早速ですが例を出しながら見ていこうと思います。
まずは今回の例題をコマンド操作を行いながらやっていくために、ディレクトリを準備しておきます。

$ mkdir 2021_01_ 2021_02_  2021_03_  2021_04_  2021_05_  2021_06_  #・・・①
$ mkdir 2021_01 2021_02 2021_03 2021_04 2021_05 2021_06            #・・・②

$ ls -U1
2021_01
2021_01_
2021_02
2021_02_
2021_03
2021_03_
2021_04
2021_04_
2021_05
2021_05_
2021_06
2021_06_

このディレクトリをグループで分けると月の後にアンダーバー(_)がある①かない②かの違いとなります。今回はアンダーバーがない②ものだけをディレクトリとして残そうと思います。

そのため最初に作成したディレクトリを全て削除したいのですが、一つ一つ削除するのも面倒ですし、今回はアスタリスク(*)を使用して削除してしまうと月毎のディレクトリが両方消えてしまいます。

$ rm -rf 2021_01*
$ ls -U1
2021_02
2021_02_
2021_03
2021_03_
2021_04
2021_04_
2021_05
2021_05_
2021_06
2021_06_


そのため今回はクエスチョンマーク(?)を使用するのですが、先に結論を述べておくと

クエスチョンマーク(?)は一つにつきひとつの文字を任意に表します。


どうゆう事か。今回の例で述べると、「2021_」までは一緒ですが、その後の文字数は2文字か3文字かの違いがあります。今回はアンダーバーがないものだけをディレクトリとして残すので、3文字のものは入りません。クエスチョンマーク(?)一つがひとつの文字を任意に表すとすると、「$ rm -rf 2021_???」で2021_以降の3文字の任意の文字を削除するということになり、2021_以降の3文字以外のディレクトリは削除されないのです。

$ rm -rf 2021_???
$ ls -U1
2021_01
2021_02
2021_03
2021_04
2021_05
2021_06

このようにクエスチョンマーク(?)を使い、削除したいディレクトリを削除することができました。


一応、これまでの流れを画像でも残しておきます。


今回は以上です。

コメント

タイトルとURLをコピーしました