重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

いつもお世話になっております。

自サイトの、http://hogehoge.com/aaa/zzz.php?uid=xxx
というリンクをfindとgrepを使って、
再帰的に検索したいのですが、
サンプルをおしえていただけませんでしょうか。

お手数をお掛けしますが、どうぞよろしく願いいたします。

A 回答 (2件)

>具体的には、自前サーバーにsshでログインして、


>htmlまたはphp ファイルの中から、
​>http://hogehoge.com/aaa/zzz.php?uid=xxx
>(zzzは固定、xxxは動的で、既になんらか値が埋め込まれている状況です。
>(文字列としてuid=00-AA9zzのように)

では、cdでファイルのある一番上のディレクトリに移動したとして
find . \( -name "*.html" -o -name "*.php" \) -exec grep -H -E 'http://hogehoge.com/aaa/zzz.php\?uid=\w\w-\w+' \{\} \;

・-nameが複数あって、それがor条件なので\( \)でくくります。
・grepで検索ファイル名を表示するため-Hオプションを指定します
(ファイルを1つしか指定しない場合、デフォルトではファイル名表示がない)
・拡張正規表現を使うため-Eオプションを指定します。(または、egrepコマンドを使用する)
・?は正規表現で特別な意味を持つので、\?としてその特別な意味をキャンセルします
・例から、uidを [英数字2文字]-[英数字複数]と判断して\wを使用しました。この形式でない場合は適宜変更してください


最近ではfindで検索→xargsで処理というのも流行りです
find . \( -name "*.html" -o -name "*.php" \) -print0 | xargs -0 grep -H -E 'http://hogehoge.com/aaa/zzz.php\?uid=\w\w-\w+'
    • good
    • 0
この回答へのお礼

ありがとうございました。
解説つきでわかりやすかったです。

お礼日時:2010/02/14 19:30

・「自サイト」とは何を指してますか?


・その「自サイト」でfindやgrepが使えるような状態にできますか?
(telnetやsshでログインするとか)
・検索対象は何ですか?
ファイルならその書式は?
http://hogehoge.com/aaa/zzz.php?uid=xxx」は、検索対象から探す「文字列」ですか?それとも、検索対象そのものですか? zzzやxxx等は固定でしょうか?
・リンクというのは <a href=~>ということでしょうか?

あまりにも曖昧すぎて、サンプルを示しようがありません。

たとえば、
・自前サーバーのhtmlファイルから <a href=~>を検索

・レンタルサーバーでPHPで動的に作成されるwikiやブログから検索
とでは、まったくやりかたが違います。

この回答への補足

ご連絡ありがとうございます。

・自前サーバーのhtmlファイルから <a href=~>を検索
を検索したいです。

具体的には、自前サーバーにsshでログインして、
htmlまたはphp ファイルの中から、
http://hogehoge.com/aaa/zzz.php?uid=xxx
(zzzは固定、xxxは動的で、既になんらか値が埋め込まれている状況です。
(文字列としてuid=00-AA9zzのように)

説明が、下手で申し訳ございません。
これで、伝わりますでしょうか。

補足日時:2010/02/14 00:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!