更新:
もう一度試してみたところ、スクリプトが正確に機能することがわかりました。私は疲れすぎて、実際には私自身だったのに、スクリプトが間違っていると思うようになる愚かなことをしたに違いありません。:-(
助けてくれた chepner、shellter、William、glenn、Jonathan には多くの thx がありました。実際、私の混乱は、現在のディレクトリで検索を実行したことによって何らかの形で引き起こされたと思います "."
ヒントについては Thx!
このスレッドはクローズする準備ができています。
次の点を考慮してください。
find . | grep -E ".*\.log$"
これをコマンド ラインで実行すると、期待どおりに動作します。
.log
ただし、スクリプトでは、たとえば次のようになります。
#!/bin/sh find . | grep -E ".*\.log$"
それは失敗します。検査をオンにすると、スクリプトの実行中に正規表現.*.log$が (auto-??) のように一重引用符で囲まれている
set -x
ことに気付きました。\+ find . \+ grep -E '.*\.log$'
私のコードには二重引用符が含まれていますが。どうすればこれを防ぐことができますか?
制限:
find
課題は、との両方を使用することです。grep
他のコマンドは許可されていません- 繰り返しになりますが、課題は、誰かがアドバイスしたいかもしれないように、だけでなく両方を使用することです
find
- 詳細情報、使用される正規表現は、
grep
ここに示されているもの (いくつかの個別の RegExp) のようにはるかに複雑ですOR
。これで既に煩わしさが発生しているため、ここでは単純化しました。私は結果なしで4時間以上これに取り組んできました。Google と StackOverflow を検索しましたが、似たようなものは見つかりませんでした。解決策が信じられないほど簡単で、愚かすぎて見つけられないのではないかと心配していますか? :-(
どんな助けでも感謝します、事前にthx!