だから基本的に私はこれら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