0

更新:
もう一度試してみたところ、スクリプトが正確に機能することがわかりました。私は疲れすぎて、実際には私自身だったのに、スクリプトが間違っていると思うようになる愚かなことをしたに違いありません。:-(
助けてくれた 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!

4

1 に答える 1

0

使用している OS と実行可能なバージョンは何ですか?

あなたの小さなスクリプト:

#!/bin/sh
find . | grep -E ".*\.log$"

また

#!/bin/bash
find . | grep -E ".*\.log$"

Debian Wheezyで私にとって完全に機能します(単一または二重のバックスラッシュ)

yba@tavas:~$ bash --version
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
yba@tavas:~$ grep --version
grep (GNU grep) 2.12
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

あなたのスクリプトはどのような意味で失敗しますか?

出力例は次のとおりです。

yba@tavas:~$ ./st.sh 
./Downloads/serial_update_rev11.log
./.virt-manager/virt-manager.log
./Android/adt-bundle-linux/eclipse/configuration/org.eclipse.update/install.log
./Android/workspace/.metadata/.plugins/org.eclipse.cdt.core/.log
./Android/workspace/.metadata/.log
./ti-dvsdk_dm365-evm_4_02_00_06/xdctools_3_16_03_36/eclipse/plugins   /org.eclipse.rtsc.xdctools.product_3.16.3.36/META-INF/Make.log
./ti-dvsdk_dm365-evm_4_02_00_06/codecs-dm365_4_02_00_00/packages/ittiam/codecs/g711_dec    /hs_err_pid17410.log
./.local/share/gvfs-metadata/root-dfdae0ca.log
./.local/share/gvfs-metadata/label-AR7266WnX\x20V2_1.2-a6becf19.log
./.local/share/gvfs-metadata/home-2def37e1.log
./.local/share/gvfs-metadata/uuid-5c7747c5-81e5-4464-bae0-2c61afc73da4-7a539d2d.log
 ./.local/share/tracker/tracker-store.log
./.local/share/tracker/tracker-miner-fs.log
./.local/share/tracker/tracker-extract.log
yba@tavas:~$
于 2013-02-25T21:14:13.110 に答える