我需要将返回find函数的每个文件名传递给我的脚本 考虑一下简单的例子:
find ./ -iname "*.java" | xargs ./fnfs2lc.sh
和fnfs2lc.sh包含简单的代码:
#!/bin/bash
echo $1
exit
因此,我希望获得文件列表,但它只显示目录树中的第一个文件。
如果我执行:
find ./ -iname "*.java"
结果是:
./src/test/java/com/win/slots/picktables/SequnetialPickTableTest.java
./src/test/java/com/win/slots/picktables/WeightPickTableTest.java
./src/test/java/com/win/slots/picktables/AccuratePickTableTest.java
./src/test/java/com/win/slots/picktables/RangePickTableTest.java
./src/test/java/com/win/slots/picktables/KeyPickTableTest.java
./src/test/java/com/win/slots/api/WinningAmountTest.java
./src/test/java/com/win/slots/api/BIEventSenderTest.java
./src/test/java/com/win/slots/api/ParserTester.java
./src/test/java/com/win/slots/api/WindowTest.java
如果我运行第一个命令,我得到:
./src/test/java/com/win/slots/picktables/SequnetialPickTableTest.java
你知道为什么它会在第一个文件后停止处理吗?
答案 0 :(得分:1)
您的脚本正在使用$1
,因此这是列表中的第一个结果。如果要打印所有结果,可以使用:
#!/bin/bash
printf "%s\n" "$@"
此外,您不需要xargs
,您可以使用
find . -iname "*.java" -exec ./fnfs2lc.sh {} +
如果使用效率较低的
find . -iname "*.java" -exec ./fnfs2lc.sh {} \;
然后你可以使用
echo "$1"
但请注意$1