我想删除许多临时PS数据集,其数据集名称如MYTEST。**,但仍无法找到一种简单的方法来处理任务。
我打算使用下面的Shell命令删除它们
cat "//'dataset.list'"| xargs -I '{}' tsocmd "delete '{}'"
但是,首先我必须将数据集列表保存到PS数据集或Unix文件中。在Unix中,我们可以将ls命令的输出重定向到文本文件中:" ls MYTEST。*> dslist",但在TSO或ISPF面板上,似乎没有简单的命令来做到这一点。
有人对此有任何疑问吗?您的意见将不胜感激。
答案 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)