【问题标题】:passing find result to custom script将查找结果传递给自定义脚本
【发布时间】:2014-03-30 14:31:35
【问题描述】:

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

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

【问题讨论】:

    标签: ubuntu grep find xargs


    【解决方案1】:

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

    #!/bin/bash
    printf "%s\n" "$@"
    

    另外,你不需要xargs,你可以使用

    find . -iname "*.java" -exec ./fnfs2lc.sh {} +
    

    如果你使用效率较低的

    find . -iname "*.java" -exec ./fnfs2lc.sh {} \;
    

    那么你可以使用

    echo "$1"
    

    但请注意 $1 周围的引号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 2020-12-17
      相关资源
      最近更新 更多