ベストアンサー1
シェルはワイルドカード文字をファイルに拡張するため、常に正規表現を一重引用符で囲んでください。
だから:
ls -1 | grep '\.java$'
不要なワイルドカード文字を削除しました。
しかし、ls
出力を解析するのは良い考えではありませんfind
。以下を提案します。
find . -name '*.java'
再帰的に検索する
find . ! -name . -prune -name '*.java'
またはGNUと互換性があるかfind
:
find . -name '*.java' -mindepth 1 -maxdepth 1
現在のディレクトリのみを検索します。
.
この特別な場合は、深さ0(ファイル検索を開始するように指定した現在の作業ディレクトリ)にある唯一のファイルがパターンと一致しないため、find
省略*.java
できます-mindepth 1
。