私はsvnローカルコピーを持っています。文字列some_stringを検索したいのですが。
$ grep some_string * -r
lang/en:some_string=Some string
lang/.svn/en:some_string=Some string
しかし、さらに先に進むと、第1レベルの隠しディレクトリが除外されているようです。
$ cd lang && grep some_string * -r
en:some_string=Some string
最初の深度レベルだけでなく、非表示のsvnディレクトリを出力から削除するにはどうすればよいですか?
$ grep some_string * -r --which_option_here?
lang/en:some_string=Some string
使用する --exclude-dir
オプション、例:
grep -r --exclude-dir='.*' some_string
man grep
:
--exclude-dir=DIR
Exclude directories matching the pattern DIR from recursive searches.
ただし、--exclude-dir
オプションはGNU grepでのみ使用できます。grep
がそれをサポートしていない場合、他のツールを検索として使用する必要があるかもしれません 例 =:
find . \( -name .svn -Prune \) -o -name "*" -exec grep -H "some_string" {} 2>/dev/null \;
私は通常これを使います:
for e in $(find . -maxdepth 1 -type d); do echo ${e#\./}; done | grep -v '^\.'
${e%\./}
は最初の./
を削除し、次にgrep
はドットで始まるすべてのものを削除します。