ワイルドカードについて学んでいます。ls *[0-9]*
名前に数字を含むすべてのファイル/ディレクトリが一覧表示されているため、名前の
ls *[^0-9]*
途中に数字が含まれていないすべてのファイル/ディレクトリを一覧表示しないでください。コマンドでリストされたいくつかのファイルに番号があることを確認しました。
file1.txt
そしてfile1~
上場されたこともあります。
答え1
[0-9]
すべての数字と一致するため、*[0-9]*
1 つ以上の数字を含むすべての文字列です。
[^0-9]
数字以外の文字と一致するため、*[^0-9]*
数字以外の文字は1つ以上の文字列と一致します。
file1.txt
数字と数字以外のものがあるので、両方のパターンが一致します。
通常のファイル名パターンと同様に、単一パターンを使用して特定の文字を含まない文字列を一致させる方法はありません。
一方、正規表現を使用すると、Bashまたはkshの拡張globのように、^[^0-9]+$
数字ではなく数字のみで構成される文字列と一致します。+([^0-9])
(shopt -s extglob
Bashでは必須です。)