此处文档避免创建中间一次性使用文件。我希望在获取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
一次,因为每个搜索模式都不能很好地扩展到大型目录层次结构。
答案 0 :(得分:1)
如果你在使用/ proc(例如linux)的系统上,请尝试:
#!/bin/sh
find . | grep -f /proc/self/fd/3 3<< EOF
Controller.java
Main.java
Config.java
EOF
或者,如果您的shell支持进程替换(Bourne Shell不支持):
#!/bin/bash
find . | grep -f <( cat << EOF
Controller.java
Main.java
Config.java
EOF
)