带有此处文档的GREP -F



这里的文档避免创建中间的,一次性使用文件。我希望在获取20个可能的文件的完整路径(不使用find -o语法)时使用此方法。我希望以下工作能够工作:

find | grep -f <<EOF
Controller.java
Main.java
Config.java
EOF

但我得到:

grep: option requires an argument -- f

我是否误解了这里的记录是如何工作的?还是GREP -F不能使用文件描述符效果很好?

我也可以使用find的解决方案,可以列出-name值列表,但我不想键入-o 20次。


最佳替代方案:

cat <<EOF |  xargs --delimiter 'n' --max-args=1 -I% find -iname "*%*"
Controller.java
Main.java
Config.java
EOF

这在智力上是不满意的,因为每个搜索模式一次在整个文件层次结构上运行find,这对于大型目录层次结构都无法扩展。

如果您正在使用/proc(例如Linux)的系统,请尝试:

#!/bin/sh
find . | grep -f /proc/self/fd/3 3<< EOF
Controller.java
Main.java
Config.java
EOF

或,如果您的外壳支持流程替代(Bourne Shell没有):

#!/bin/bash
find . | grep -f <( cat << EOF
Controller.java
Main.java
Config.java
EOF
)

相关内容

  • 没有找到相关文章

最新更新