我的信息作业创建了文件列表作为输出。
例如: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脚本中。
文件名中的最后一个数字是源表中的主键。
请告诉我输入
感谢您的帮助。
答案 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),然后使用一个表达式将它多次连接成一个完整的文件路径,这个传递路径可以通过到平面文件的特殊文件名端口