在这里,文档避免创建中间的一次性使用文件.我希望在获得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,对于大型目录层次结构来说,这并不能很好地扩展。
发布于 2017-09-06 22:10:16
如果您使用的是/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
)https://stackoverflow.com/questions/46082466
复制相似问题