現在、特定のファイル配下にあるファイルの中でredirect::responseという記載があるファイルを抽出したいと考えております。
その際に
色々調べた結果、下記を試してみたのですが、
明らかに違うファイルも出力されてしまいます。
find . -name "*" -print | xargs grep redirect::response
※違うファイル
img配下の画像など
こちらどこが間違っておりますでしょうか
また、別の方法などもございましたらご教示頂けますと幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ファイル名を出力
bash
1#!/bin/sh 2 3for ff in $(find . -type f) 4do 5 grep -q 'redirect::response' $ff && echo $ff 6done
一行でもできますよね。
find . -type f -exec grep -l 'redirect::response' {} ;
投稿2016/08/25 23:29
編集2016/08/26 00:06総合スコア4070
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
目的に対してコマンドは間違っていません。
明らかに違うファイルも出力されてしまいます。
ということですが、「明らかに違う」というのはどうやって判断しましたか?
投稿2016/08/25 15:37
総合スコア84542
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/26 03:30
2016/08/26 06:56
0
簡単にやるなら以下のコマンドで
find . -type f -exec grep 'redirect::response' {} /dev/null \;
慎重にやるなら以下のスクリプトで
#!/bin/sh find . -type f -exec file {} \; | \ grep 'ASCII' | \ awk 'BEGIN{FS=":"}{print $1}' | \ while read f do echo $f grep 'redirect::response' $f done
--- 追加 ---
// なんかマイナスになってるんですけど、うまく意図が伝わらなかったのかなあ
// ってことで、(解決済になったので)補足を…
まず find コマンドに関しては、"-type f" を指定することで
ファイルのみを対象とします。(ディレクトリを除外)
"-exec " で対象ファイルを引数にしてコマンドを実行します。
で、"{}" が対象ファイルになります。
また、";" は -exec を指定する時の定石ってことで。
grep コマンドの特徴として、ファイルを1つ指定した場合は
ファイル名はでませんが、複数指定された場合はでます。
簡単な例の方ではこれを利用しています。つまり /dev/null を
指定することにより、常に複数ファイル指定の形とする、
結果的にヒットしたファイル名が必ず出力される、と。
(-print を付けない場合の挙動が分からなかったのでこの形にしました)
file コマンドは、指定ファイルの素性を解析するものですね。
"ASCII" で絞り込むことによってテキストファイルのみを抽出します。
awk で fileコマンドの出力からファイル名のみを切り出し、
echo でファイル名を表示し、grep で検索しています。
今から考えると、こちらも /dev/null を与える形にして
echo を省いた方がよかったかなって気もしますね。
いまさらですが。
投稿2016/08/25 14:36
編集2016/08/29 10:29総合スコア7458
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
find . -name "*"
でのべつくまなくファイルを対象としています。そのため、思わぬファイルも対象となっています。
何か対象とするファイルを絞り込めるものはないのでしょうか(例えば、ファイル名なら一定の拡張子であるとか)?それに合わせてオプションを指定していきましょう。
投稿2016/08/25 14:22
総合スコア1557
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/25 14:33
退会済みユーザー
2016/08/26 00:15
2016/08/26 03:29
2016/08/29 14:31
退会済みユーザー
2016/08/29 14:46
2016/08/29 15:01
退会済みユーザー
2016/08/29 15:04
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。