1
grep -r "print " */*/*/*/*/*.py */*/*/*/*.py */*/*/*.py */*/*.py

現在のディレクトリ内のサブディレクトリ内のすべてのファイルで"print "のすべての出現を探したいです。.py私は上記のコマンドを思いつきましたが、それは機能しますが、私のファイルのいくつかは深さ 3 にあり、他のファイルは深さ 4 にあり、他のファイルはさらに深い深さにあるため、任意の深さを持つ何らかの方法を見つけたいと思います。

おそらく使用findしてからパイプできると確信していますが、その方法はよくわかりません。

4

4 に答える 4

4

bash および zsh では、以下を使用できます**

grep "print " **/*.py

選択したシェルで二重星が利用できない場合は、次のxargsように使用できます。

find . -regex ".*\.py" -print0 | xargs -0 grep "print "
于 2013-11-02T16:33:52.557 に答える
3

で使っfindてみてください-exec

find -type f -name '*.py' -exec grep -H 'print ' {} \;

パフォーマンスを向上させるにはfindxargs

find -type f -name '*.py' -print0 | xargs -0 grep 'print '
于 2013-11-02T16:34:08.267 に答える
2

パイプは必要ありません。

find some/dir -name '*.py' -exec grep -H "print " {} \;
于 2013-11-02T16:33:38.373 に答える