BOZOという名前のファイルのファイル名のリストを取得する方法を見つけようとしていますが、123 OR 456のみで終わります。
ファイルは次のとおりです。
BOZO12389、
BOZOand3
BOZOand456
BOZOand5
BOZOhello123
したがって、コマンドは「BOZOhello123」と「BOZOand456」のみを表示する必要があります
私はそれを理解することはできません。私は考えられるすべての形式のLSとGREPを試しました。おもしろいことに、クラスで約10分間試してみましたが、誰も(インストラクターを含めて)それを取得できませんでした。
私は次のことをしました、そしてそれは働きました
ls BOZO*456 BOZO*123
シェルのグロブの使用:
ls BOZO*{123,456}
正規表現を使用してください。コマンドegrep
は、正規表現を使用できるようになるため、役立つはずです。
BOZO456およびBOZO123の種類のファイルを検索しています
ピリオド_.
_はワイルドカードであり、_<anything>
_の代わりに使用できます。 _*
_を使用すると、0回以上繰り返すことができます。約123と456の丸括弧を配置することにより、ORをシミュレートします。
したがって、任意の文字を0回以上繰り返し、その後に123または456を続ける必要があります。
例:
egrep "BOZO.*(456|123)" data
助けと編集をしてくれたNathan Fellmanに感謝します。
findコマンドを使用することもできます:
find . \( -name "BOZO*123" -o -name "BOZO*456" \)
$ ll grep *BOZO*
も機能するはずです!
これはそれほど難しいことではありません。最も単純な方法は、ディレクトリをls
してから、必要なものだけをgrepすることです。
$ ls *BOZO* | grep -e '123$' -e '456$'