这里的文档避免创建中间的,一次性使用文件。我希望在获取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
)