【问题标题】:Issue while renaming a file with file pattern in unix在 unix 中使用文件模式重命名文件时出现问题
【发布时间】:2020-05-28 00:38:03
【问题描述】:

作为我们流程的一部分,我们会获得一个 .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】:

    试试

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-02-08
        • 2018-05-31
        • 2010-11-08
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多