ファイルのディレクトリ階層があります(プレーンテキストのものとバイナリのものがあります)。
ファイルとディレクトリの階層を再帰的に検索して、指定した文字列を含むファイルの名前を探し、可能であれば「ファイル名と行番号へのパス」のリストを出力する簡単な方法はありますか?
基本的に、私が欲しいのは、行番号を印刷するオプションもあることを除いて、ほぼ同じです。
#!/bin/bash
#
# Recursively search files for pattern specified as argument.
#
pattern="$1"
if [ -z "$pattern" ]; then echo "$0: Unspecified pattern."; exit; fi
searchfiles () {
for filename in *; do
if [ -f "$filename" ]; then {
result=`/bin/grep -e "$pattern" "$filename"`
if ! [ -z "$result" ]; then echo "File: `pwd`/$filename"; fi
}
Elif [ -d "$filename" ]; then
cd "$filename"
searchfiles
cd ..
fi
done
}
searchfiles
OK、以下に提案するように、再帰的なgrepを使用できますが、ファイル名と行番号だけが必要です。長い長い行がたくさんあると、印刷時に端末を折り返すと内容が乱雑になる可能性があるため、これが私の解決策でした:
grep -Rn index.php * | sed -e 's/ .*//g'
よろしく、
ジョン・ゴッシュ
grep -Rn "your_string" *
トリックを行う必要があります。