新しいファイルに触れるとすぐに、lsコマンドとgrep操作が停止します。

新しいファイルに触れるとすぐに、lsコマンドとgrep操作が停止します。

私のホームディレクトリで特定の拡張子を持つすべてのファイルを見つけようとしています。ファイル拡張子のインスタンスが1つしかない場合、lsコマンドは正常に機能しますが、同じ拡張子を持つ新しいファイルに触れるとすぐにlsコマンドは何も返しません。

何が起こっているのかよく分からない。誰かが私を正しい方向に導くのを助けることができればいいでしょう。

ここに画像の説明を入力してください。

ベストアンサー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

おすすめ記事