Oracle ODI || OSCommand ||重命名文件

时间:2013-05-31 14:37:14

标签: linux oracle-data-integrator

我在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执行。 (也是从putty执行)。文件的权限设置为777.我得到以下异常

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

我可以从ODI重命名目录中的单个文件,但它不能与“for”一起使用。 任何人都可以帮我从ODI执行此命令吗?或者这个问题是否有解决办法?

1 个答案:

答案 0 :(得分:2)

我自己找到了解决方案。

1)我使用OSCommand并且无法识别命令。我使用过ODIOSCommand并且工作正常。

2)我正在指定bash shell命令,它正在抛出异常

   syntax error at line 1: `$'

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

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