いいえ、grep は大文字だけを考慮するわけではありません。
たとえば、あなたの質問は少しわかりません。
- -r オプションの使用法から、再帰的に検索したいようですが、そうは言いません。簡単にするために、その必要はないと思います。再帰が必要な場合は、@twm の回答を検討してください。
- 大文字 (文字) のみを検索します。それは、他の(文字以外の)文字を受け入れたくないということですか?ただし、ファイル名には有効です(数字、ダッシュ、ドットなど)。
- 行ごとにファイルを1つだけ持つことは許可されていないとは言わないので、問題ないと思います(したがって、を使用します)
ls -1
。
素朴な解決策は次のとおりです。
ls -1 | grep "^[[:upper:]]\+$"
つまり、大文字のみを含むすべての行を印刷します。たとえば、次のように出力される TEMP ディレクトリに:
ALLBIG
LCFEM
WPDNSE
README.TXT
ただし、これにより、またはのようなファイルが除外されます。これらのファイルFILE001
は、要件 (上記を参照) によっては含まれる可能性が高いです。
したがって、より良い解決策は次のようになります。
ls -1 | grep -v "[[:lower:]]\+"
つまり、小文字を含まないすべての行を出力します。たとえば、TEMPディレクトリに次のように出力されます。
ALLBIG
ALLBIG-01.TXT
ALLBIG005.TXT
CRX_75DAF8CB7768
LCFEM
WPDNSE
~DFA0214428CD719AF6.TMP
最後に、末尾に「/」を付けてディレクトリを「適切にマーク」するには、-F
(または--classify
) オプションを使用できます。
ls -1F | grep -v "[[:lower:]]\+"
繰り返しますが、出力例:
ALLBIG
ALLBIG-01.TXT
ALLBIG005.TXT
CRX_75DAF8CB7768
LCFEM/
WPDNSE/
~DFA0214428CD719AF6.TMP
find
別の出力 (例: ) を使用できる場合は、別のオプションを使用することに注意してください。ただし、find ! -regex ".*[a-z].*"
別の出力になります。