如何在informatica或shell脚本中为每个已处理的文件创建子文件夹

时间:2016-11-20 04:38:02

标签: shell informatica

我的信息作业创建了文件列表作为输出。

例如:ABC_DC_IND_20161119_2875793.dat     ABC_DC_IND_20161119_2875794.dat     ABC_DC_IND_20161119_2875795.dat

现在需要将每个文件移动/创建到相应的子文件夹

子文件夹的名称应与文件名

相同

例如:文件ABC_DC_IND_20161119_2875793.dat应该在子文件夹ABC_DC_IND_20161119_2875793中,依此类推。

如何为每个文件名动态创建子文件夹,并在相应的子文件夹中创建文件。是否有可能在informatica / shell脚本中。

文件名中的最后一个数字是源表中的主键。

请告诉我输入

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

set ABC_DC_IND_20161119_2875793.dat ABC_DC_IND_20161119_2875794.dat ABC_DC_IND_20161119_2875795.dat

所以现在文件名是$ 1,$ 2和$ 3。 然后:

for i; do
  dir=${i%.dat}
  mkdir -p "$dir" || exit
  mv "$i" "$dir" || exit
done

使用您描述的命名约定将文件移动到目录中。

答案 1 :(得分:0)

首先将所有文件加载到一个目录,这将是以下程序的来源

cd $SOURCEFILEDIR

ls > $TEMPFILEDIR/list.txt    

rm -rf $TGTFILEDIR

for file in $($TEMPFILEDIR/list.txt)

do

   FILENAME=$(echo ${file} | cut -d"." -f1)

   XFILENAME=$(echo ${file})


   mkdir $TGTFILEDIR/$FILENAME

   chmod 775 $TGTFILEDIR/$FILENAME



   cp $SOURCEFILEDIR/$XFILENAME $TGTFILEDIR/$FILENAME/$XFILENAME

   chmod 775 $TGTFILEDIR/$FILENAME/$XFILENAME

done


rm $TEMPFILEDIR/list.txt


return 0

答案 2 :(得分:0)

你可以使用一个音序器来获取你的映射中的数字(我更喜欢db sequencer,可以根据你的部署例程使用informatica sequencer),然后使用一个表达式将它多次连接成一个完整的文件路径,这个传递路径可以通过到平面文件的特殊文件名端口