基本的に私がやろうとしているのは、特定の拡張子を持つ現在のディレクトリの内容を一覧表示することです (私の場合は .c ファイル)。
だから私がうまくいくと思ったのは:
ls | grep .\*\.c
そして、それは主に機能しますが、cのように終わるファイルも返します
- music (ディレクトリ)
- test.doc
正規表現が表示されないため、正規表現に問題がありますか。
どうもありがとう
拡張子ls *.c
を持つ現在のディレクトリ内のすべてのファイルをリストするために使用するだけです。.c
できることは次のとおりです。
find -name "*.c"
.c
現在の作業ディレクトリから再帰的に、拡張子を持つすべてのファイルを検索します。
あるいは、非再帰的で を使用したい場合はls
、次のようにできます。
ls *.c
grep
検索結果に正規表現を適用する方法を知りたい場合ls
(これはより面倒ですが):
ls | grep ".*\.c$"
再説明:
.
- 任意の文字に一致.*
- 任意の文字に 0 回以上一致.*\.
- 任意の文字に 0 回以上一致し、.
文字どおりに一致します (で「エスケープ」することによって指定されます\
) 。".*\.c
- 任意の文字に 0 回以上一致し、.
文字どおりに一致し、次に char に一致しますc
.*\.c$
- 任意の文字に 0 回以上一致し、.
文字どおり a に一致し、次に char に一致しc
ます。それがパターンの終わりである場合のみ (その後は何もありません)。$
「終わり」の正規表現アンカーです。あなたはかなり近いです
ls | grep \\.c$
二重のバックスラッシュを参照してください
バックスラッシュをエスケープする必要があります。
ls | grep .*\\.c