2013-05-31 11 views
0

Je travaille dans Oracle ODI 11g. J'ai le serveur de source de Linux. Je dois renommer tous les fichiers dans un dossier en supprimant le préfixe (e_). J'ai utilisé la commande:Oracle ODI || OSCommand || Renommer des fichiers

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

via putty et cela fonctionnait bien. Cette commande ne fonctionne pas dans OSCommand API of ODI. Je reçois l'exception suivante:

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

L'ajout de guillemets autour de la commande ne résout pas le problème. J'ai également essayé de copier cette commande dans le fichier test.sh mais elle ne s'exécute pas à partir de OSC OSCommand. (qui s'exécute à partir de putty aussi bien). L'autorisation de fichier a été mis à 777. Je me exception suivante

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

Je peux renommer seul fichier dans le répertoire de l'ODI, mais il ne fonctionne pas avec « pour ». Quelqu'un peut-il m'aider à exécuter cette commande de ODI? ou y at-il une solution de contournement pour ce problème?

+0

Essayez donnant le chemin complet et en spécifiant la commande shell lui-même comme « sh /opt/weblogic/shellscript.sh » –

+0

il me donne exception « : erreur de syntaxe à la ligne 1:' $ » inattendu » – Faryal

+0

cernées I était en train de spécifier la commande shell bash et ODI supporte posix shell (sh). J'ai utilisé pour 'f in e_ *; fais mv "$ f" "\ echo $ f | sed -e 's/^ e _ // \'' "; done' – Faryal

Répondre

2

J'ai trouvé la solution moi-même.

1) J'utilisais OSCommand et les commandes n'étaient pas reconnues. J'ai utilisé ODIOSCommand et cela a bien fonctionné.

2) je commande shell spécifiant bash et jetais exception

syntax error at line 1: `$' 

Selon la documentation, http://gerardnico.com/doc/odi/webhelp/en/ref_tools/snpsoscommand.htm, ODI prend en charge de POSIX OS compatibles, en utilisant "sh". Je l'ai utilisé

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 est variable globale contenant le répertoire des fichiers.

Veuillez noter que renommer les fichiers dans le répertoire dans ODI n'est qu'un exemple. Si seulement renommer les fichiers dans le répertoire est requis, cela peut être fait par ODIFileMove dans le paquet.

Questions connexes