在unix中用文件模式重命名文件时的问题。

问题描述 投票:0回答:1

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

输入文件名 。

Mem_Enrollment_20200515130341.dat.gz

步骤1:解压这个文件: (按预期工作)

gzip -d Mem_Enrollment_*.dat.gz

输出:

Mem_Enrollment_20200515130341.dat

第2步:重命名这个文件:(重命名时的问题)。

同样,我也是按照这个模式去做的,但我知道在这种情况下,这样做是行不通的。那么,我应该怎么做重命名这个文件?

mv Mem_Enrollment_*.dat Mem_Enrollment_*.dat_D11

输出 :

Mem_Enrollment_*.dat_D11

预期输出 :

Mem_Enrollment_20200515130341.dat_D11
unix datastage
1个回答
1
投票

尝试

for fn in Mem_Enrollment_*.dat
do 
mv ${fn} ${fn}_D11;
done

0
投票

通过数据阶段,你可以通过 "ls Mem_Enrollment_*.dat.gz "循环执行命令阶段的ls输出,然后在循环输出列表时使用@FM作为分隔符。然后你可以把gzip和重命名分解成两个独立的命令,这样有助于工作中的可读性。

这里唯一需要注意的是,由于Datastage内部的一些问题,Start Loop阶段不接受定界符中的@FM。所以你需要设置一个等于它的用户变量,并将其传递给标记。

© www.soinside.com 2019 - 2024. All rights reserved.