46

のようなER (拡張正規表現)を使用しようとしています。lsls .+\..+

拡張子を含むすべてのファイルを印刷しようとしています(使用できたはずですがls *.*、ERを使用してみたかったのです)。

そのコードを実行すると、次のエラーが発生しますls: .+..+: No such file or directory

4

2 に答える 2

105

正規表現とシェルグロブを混同しています。正規表現を使用してファイル名を照合する場合は、次のように実行できます。

$ ls | egrep '.+\..+'
于 2013-03-11T18:38:27.933 に答える
5

使用しているシェルはわかりませんが、一般的な* nix CLIツール(、など)はサポートしていますが、通常はそのように正規表現をサポートしgrepsedいません。

bashのようなシェルがサポートしているのはglobbingです。これは、いくつかの類似した文字(*など)を使用しますが、同じものではありません。

新しいバージョンのbashには、正規表現演算子があり=~ます。

for x in `ls`; do 
    if [[ $x =~ .+\..* ]]; then 
        echo $x; 
    fi; 
done
于 2013-03-11T18:43:02.500 に答える