2

基本的に私がやろうとしているのは、特定の拡張子を持つ現在のディレクトリの内容を一覧表示することです (私の場合は .c ファイル)。

だから私がうまくいくと思ったのは:

ls | grep .\*\.c

そして、それは主に機能しますが、cのように終わるファイルも返します

  1. music (ディレクトリ)
  2. test.doc

正規表現が表示されないため、正規表現に問題がありますか。

どうもありがとう

4

4 に答える 4

4

拡張子ls *.cを持つ現在のディレクトリ内のすべてのファイルをリストするために使用するだけです。.c

于 2012-12-12T17:53:15.097 に答える
3

できることは次のとおりです。

find -name "*.c"

.c現在の作業ディレクトリから再帰的に、拡張子を持つすべてのファイルを検索します。

あるいは、非再帰的で を使用したい場合はls、次のようにできます。

ls *.c

grep検索結果に正規表現を適用する方法を知りたい場合ls(これはより面倒ですが):

ls | grep ".*\.c$"

再説明:

  • .- 任意の文字に一致
  • .*- 任意の文字に 0 回以上一致
  • .*\.- 任意の文字に 0 回以上一致し、.文字どおりに一致します (で「エスケープ」することによって指定されます\) 。
  • ".*\.c- 任意の文字に 0 回以上一致し、.文字どおりに一致し、次に char に一致しますc
  • .*\.c$- 任意の文字に 0 回以上一致し、.文字どおり a に一致し、次に char に一致しcます。それがパターンの終わりである場合のみ (その後は何もありません)。$「終わり」の正規表現アンカーです。
于 2012-12-12T17:53:16.843 に答える
2

あなたはかなり近いです

ls | grep \\.c$

二重のバックスラッシュを参照してください

于 2012-12-12T17:57:50.470 に答える
1

バックスラッシュをエスケープする必要があります。

ls | grep .*\\.c
于 2012-12-12T17:59:49.020 に答える