是否可以使用通配符删除z / OS上的数据集

时间:2014-07-22 02:35:24

标签: unix dataset mainframe zos tso

我想删除许多临时PS数据集,其数据集名称如MYTEST。**,但仍无法找到一种简单的方法来处理任务。
我打算使用下面的Shell命令删除它们

  cat "//'dataset.list'"| xargs -I '{}' tsocmd "delete '{}'"

但是,首先我必须将数据集列表保存到PS数据集或Unix文件中。在Unix中,我们可以将ls命令的输出重定向到文本文件中:" ls MYTEST。*> dslist",但在TSO或ISPF面板上,似乎没有简单的命令来做到这一点。

有人对此有任何疑问吗?您的意见将不胜感激。

3 个答案:

答案 0 :(得分:1)

Rexx ISPF选项可能是最简单的,可以在将来使用,但选项包括:

  • 使用ispf 3.4中的save命令保存到文件,然后在保存命令创建的文件上使用rexx程序

  • listcat命令,特别是

    listcat lvl(MYTEST)ofile(ddname)

    然后写一个rexx程序来进行实际的删除

  • 或者您可以使用ISPF services LMDINIT,LMDLISTY&在ISPF下运行的rexx程序中的LMDFREE,即

       /* Rexx ispf program to process datasets */
       Address ispexec 
       "LMDINIT LISTID(lidv)  LEVEL(MYTEST)"
       "LMDLIST LISTID("lidv") OPTION(list) dataset(dsvar) stats(yes)"
       do while rc = 0
          /* Delete or whatever */
       end
       "LMDFREE LISTID("lidv")"

对于所有这些方法,您需要完全限定第一个高级限定符。


了解Rexx / ISPF将如何为您服务。在 ISPF编辑器中,您可以使用模型命令获取所有ISPF命令的模板/信息:

 Command ====> Model LMDINIT 

将为lmdinit命令添加模板。有rexx,cobol,pl1,ISPF-panels,ISPF-skeletons消息等模板。

答案 1 :(得分:0)

感谢布鲁斯的全面答复。根据Bruce的提示,我刚刚制定了一个单行Shell命令,如下所示:

 tsocmd "listcat lvl(MYTEST) " | grep -E "MYTEST(\..+)+" | cut -d' ' -f3 | xargs -I '{}' tsocmd "delete '{}'"

以上命令完美无缺。

答案 2 :(得分:0)

更新-IDCAMS DELETE命令使用MASK操作数已有一段时间。您可以像这样使用它:

DELETE 'MYTEST.**' MASK

z / OS 2.1的文档为here