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 シェル コマンドを指定していたところ、例外がスローされていました。

   syntax error at line 1: `$'

ドキュメントhttp://gerardnico.com/doc/odi/webhelp/en/ref_tools/snpsoscommand.htmによると、ODIは「sh」を使用してPOSIX準拠のOSをサポートしています。利用した

    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 に答える