私はERを使用しようとしています(拡張正規表現) with ls
like ls .+\..+
。
拡張子を含むすべてのファイルを印刷しようとしています(ls *.*
、しかし私はERを使用してみたかった。
そのコードを実行すると、次のエラーが表示されます:ls: .+..+: No such file or directory
。
Shell globbing と正規表現を混同しています。正規表現を使用してファイル名を一致させる場合は、次のようにします。
$ ls | egrep '.+\..+'
使用しているシェルを言うことはありませんが、一般的な* nix CLIツール(grep
、sed
など)はありますが、通常はそのように正規表現をサポートしていません。
Bashのようなシェルがサポートするのはglobbingです。これは類似の文字(たとえば*)を使用しますが、同じものではありません。
Bashの新しいバージョンには、正規表現演算子=~
があります。
for x in `ls`; do
if [[ $x =~ .+\..* ]]; then
echo $x;
fi;
done