Ubuntu 将查找结果传递给自定义脚本

Ubuntu 将查找结果传递给自定义脚本,ubuntu,grep,find,xargs,Ubuntu,Grep,Find,Xargs,我需要将返回find函数的每个文件名传递给我的脚本 考虑简单的例子: find ./ -iname "*.java" | xargs ./fnfs2lc.sh fnfs2lc.sh包含简单的代码: #!/bin/bash echo $1 exit 因此,我希望得到文件列表,但它只显示目录树中的第一个文件 如果我执行: find ./ -iname "*.java" 结果是: ./src/test/java/com/win/slots/picktables/SequnetialPickT

我需要将返回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

您知道为什么它在第一个文件之后停止处理吗?

您的脚本使用的是
$1
,因此这是列表中的第一个结果。如果要打印所有结果,可以使用:

#!/bin/bash
printf "%s\n" "$@"
另外,您不需要
xargs
,您可以使用

find . -iname "*.java" -exec ./fnfs2lc.sh {} +
echo "$1"
如果你使用效率较低的

find . -iname "*.java" -exec ./fnfs2lc.sh {} \;
那你可以用

find . -iname "*.java" -exec ./fnfs2lc.sh {} +
echo "$1"
但是请注意
$1