2017-01-15 14 views
0

は、だから私は正規表現を使用して

私が持っているもので、BまたはCで始まる/ etcディレクトリ内のすべてのファイルを見つける必要がありgrepをディレクトリ内のファイルを検索する:grep -l '/^[a-cA-C].*/g' /etc/*私は内のすべてのファイルを取得しておくかかわら/ etcディレクトリにあります。私はすべてのファイルを取得するためにgrep -lを使用

(私は推測findまたはgrepを使用してで終わるゼロ以上の文字に続いて、B、Cの大文字または小文字で始まるすべてを見つけるために

'/^[a-cA-C].*/g'問題ではありません。グローバル検索私は正規表現は私がオンライン正規表現チェッカーでそれをチェックしました右の原因である知っている

最初の試合の後にそれが停止しないよう

EDIT:解決策を見つけた - > lsのは/ etc/[a-cA-C] *

+0

あなたはディレクトリ内のファイルを検索し、むしろ「グレップ」より「コマンドのls」を使用したいです。 'ls'コマンドはgrepの正規表現を取るのではなく、シェルがそれ自身の "パ​​ターンマッチング"を使ってファイルリストに展開する引数を取る - http://wiki.bash-hackers.org/syntax/patternを参照例えば。編集:Ooops、申し訳ありません - 'a'、 'b'または 'c'で始まるファイルの意味ですか? – racraman

+0

/etcディレクトリにa、b、またはcで始まるファイルがあるとします。たとえばapple.txtの場合は返さなければなりませんが、windows.txtという名前のファイルがある場合、windowsファイルは返されません。 – ThomasP

+0

素晴らしい - 元のコメントが当てはまるので、そのリンクのパターンで 'ls'コマンドを使用してください:) – racraman

答えて

0

ここに私の例:

find ./ -type f -exec basename {} \; | grep -Ei '^(a|b|c)' 

それは再帰的に検索し、すべてのファイルを見つけることが、出力では、ファイルのだけbasenameを返し、それはあなたのためokですか?

0

あなたはこれを試すことができます:

find | grep '^\./[abc]' 
関連する問題