在unix中重命名具有文件模式的文件时出现问题

在unix中重命名具有文件模式的文件时出现问题,unix,datastage,Unix,Datastage,作为我们过程的一部分,我们得到一个.gz格式的输入文件。我们需要解压这个文件,并在文件末尾添加一些后缀。输入文件有时间戳,所以我在解压和重命名该文件时尝试使用过滤器 输入文件名: 步骤1: 解压缩此文件:按预期工作 输出: 步骤2:重命名此文件:重命名时出现问题 再一次,我同意这个模式,但我知道这在这种情况下是行不通的。那么,我应该怎么重命名这个文件呢 mv Mem_Enrollment_*.dat Mem_Enrollment_*.dat_D11 输出: 预期产出: 试一试 使用just d

作为我们过程的一部分,我们得到一个.gz格式的输入文件。我们需要解压这个文件,并在文件末尾添加一些后缀。输入文件有时间戳,所以我在解压和重命名该文件时尝试使用过滤器

输入文件名:

步骤1: 解压缩此文件:按预期工作

输出:

步骤2:重命名此文件:重命名时出现问题

再一次,我同意这个模式,但我知道这在这种情况下是行不通的。那么,我应该怎么重命名这个文件呢

mv Mem_Enrollment_*.dat Mem_Enrollment_*.dat_D11
输出:

预期产出:

试一试


使用just datastage,您可以通过ls Mem_Enrollment.*.dat.gz循环执行命令阶段的ls输出,然后在循环输出列表时使用@FM作为分隔符。然后,您可以将gzip分解并重命名为两个单独的命令,这有助于提高作业的可读性

这里唯一需要注意的是,由于Datastage内部的一些有趣之处,开始循环阶段不接受分隔符中的@FM。因此,您需要设置一个等于它的用户变量,并将其传递给标记

gzip -d Mem_Enrollment_*.dat.gz
Mem_Enrollment_20200515130341.dat
mv Mem_Enrollment_*.dat Mem_Enrollment_*.dat_D11
Mem_Enrollment_*.dat_D11
Mem_Enrollment_20200515130341.dat_D11
for fn in Mem_Enrollment_*.dat
do 
mv ${fn} ${fn}_D11;
done