【问题标题】:Oracle ODI || OSCommand || Rename Files甲骨文 ODI ||操作系统命令 ||重命名文件
【发布时间】:2013-05-31 14:37:14
【问题描述】:

我正在使用 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 执行这个命令?或者这个问题有什么解决方法吗?

【问题讨论】:

  • 尝试给它完整路径并指定shell命令本身,如“sh /opt/weblogic/shellscript.sh”
  • 它给了我异常“:第 1 行的语法错误:`$' 意外“
  • 发现我正在指定 bash shell 命令并且 ODI 支持 posix shell (sh)。我用过f in e_* ; do mv "$f" "`echo $f | sed -e 's/^e_//\'" ; done`
  • 如果您愿意,可以将其发布为您自己问题的答案,以便人们知道它有效。 =)

标签: linux oracle-data-integrator


【解决方案1】:

我自己找到了解决方案。

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来完成。

【讨论】:

    猜你喜欢
    • 2020-03-02
    • 2013-07-30
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多