想要列出所有包含“def test”的python测试脚本
当单个命令有效时,此命令行无效
find . -name "*.py" | grep "def test"
Run Code Online (Sandbox Code Playgroud)
Joh*_*024 15
尝试:
grep -r --include '*.py' 'def test'
Run Code Online (Sandbox Code Playgroud)
-r
告诉 grep 递归搜索文件
--include '*.py'
告诉 grep 只检查名称以.py
.
GNU (Linux) grep和MacOS grep--include
都支持该选项
在以下命令中,find 将找到的文件的名称传递给 grep 的标准输入:
find . -name "*.py" | grep "def test"
Run Code Online (Sandbox Code Playgroud)
这里的问题是 grep 将其标准输入视为要搜索的文本。因此,唯一的输出将是名称(而不是内容)包含def test
.
例如,让我们创建一个空文件:
$ touch 'def test.py'
Run Code Online (Sandbox Code Playgroud)
并运行管道命令:
$ find . -name "*.py" | grep "def test"
./def test.py
Run Code Online (Sandbox Code Playgroud)
该命令根据其名称查找此文件。它的内容永远不会被检查。
Bod*_*odo 11
find . -name '*.py' -exec grep -l 'def test' {} \;
Run Code Online (Sandbox Code Playgroud)
或者
find . -name '*.py' -exec grep -l 'def test' {} +
Run Code Online (Sandbox Code Playgroud)
第二个版本将grep
通过指定文件集作为参数来减少调用。