支柱の拡張を使用する

支柱の拡張を使用する

だから基本的に私はこれら2つのコマンドラインを一緒に追加したいと思います。

ls *[Aa]* 
ls *[Bb]*

AとB(小文字または大文字)が含まれていて複数回表示されるファイルを探しています。

私が試したことは次のとおりです。

ls *[Aa]*&&*[Bb]*

ベストアンサー1

支柱の拡張を使用する

1つの方法は、中括弧拡張を使用することです。次のファイルを含むディレクトリを考えてみましょう。

$ ls
1a2a3  1a2b3  1b2A3  1b2b3

aとを使用してオプションを選択するには、次の手順を実行しますb

$ ls *{[bB]*[aA],[aA]*[bB]}*
1a2b3  1b2A3

改善する

考えられる問題の1つは、オプションの1つに一致するファイルがない場合に中括弧拡張が機能する方法です。次のファイルを含むディレクトリを検討してください。

$ ls
1a2a3  1b2A3  1b2b3

それでは、次のコマンドを実行してみましょう。

$ ls *{[bB]*[aA],[aA]*[bB]}*
ls: cannot access '*[aA]*[bB]*': No such file or directory
1b2A3

この警告メッセージが気に入らない場合は、nullglobを設定すると消えます。

$ shopt -s nullglob
$ ls *{[bB]*[aA],[aA]*[bB]}*
1b2A3

ただし、このアプローチの1つの制限は、両方のglobが一致しない場合はls引数なしで実行されるため、すべてのファイルが一覧表示されることです。

拡張グローブの使用

次のファイルを含むディレクトリをもう一度考えてみましょう。

$ ls
1a2a3  1a2b3  1b2A3  1b2b3

それでは、以下を設定してみましょうextglob

$ shopt -s extglob

そして、拡張globを使ってファイルを見つけましょう。

$ ls *@([bB]*[aA]|[aA]*[bB])*
1a2b3  1b2A3

おすすめ記事