0

我正在使用 Oracle ODI 11g。我有linux源服务器。我必须通过删除前缀 (e_) 来重命名文件夹中的所有文件。我使用了命令:

     cd /weblogic/
     for f in $(ls e*); do echo mv "${f}" "${f##e_}"; done

通过腻子,它工作正常。此命令在 ODI 的 OSCommand API 中不起作用。我得到以下异常:

   java.io.IOException: Cannot run program "for": error=2, No such file or directory   

在命令周围添加引号不能解决问题。我也尝试将此命令复制到 test.sh 文件中,但它也不会从 ODI OSCommand 执行。(这也是从腻子执行的)。文件的权限设置为 777。我得到以下异常

    java.io.IOException: Cannot run program "./weblogic/test.sh": error=2, No such file or directory

我可以从 ODI 重命名目录中的单个文件,但它不适用于“for”。谁能帮我从 ODI 执行这个命令?或者这个问题有什么解决方法吗?

4

1 回答 1

2

我自己找到了解决方案。

1) 我正在使用 OSCommand 并且无法识别命令。我使用过 ODIOSCommand 并且效果很好。

2)我正在指定 bash shell 命令,但它正在引发异常

   syntax error at line 1: `$'

根据文档http://gerardnico.com/doc/odi/webhelp/en/ref_tools/snpsoscommand.htm,ODI使用“sh”支持符合 POSIX 的操作系统。我用过

    cd #V_SRC_BB_LOCAL_DIR ; for f in e_* ; do mv "$f" "`echo $f | sed -e 's/^e_//'`" ; done

#V_SRC_BB_LOCAL_DIR 是包含文件目录的全局变量。

请注意,在 ODI 中重命名目录中的文件只是一个示例。如果只需要重命名目录中的文件,可以通过包中的 ODIFileMove 来完成。

于 2013-06-05T05:16:47.680 回答