我有一些文件是由我们的销售系统上的一个程序创建的,这些文件的格式如下:
CRY_SKI_14_EDI.LIS
CRY_SUM_14_EDI.LIS
THO_SKI_14_EDI.LIS
THO_LAK_14_EDI.LIS
CRY_SKI_IE_14_EDI.LIS这些文件的数量不同,取决于我们的产品被分割成不同的品牌。是否可以将它们全部重命名,使它们读起来如下:
CRY_SKI_14_EDI_DEMO.LIS
CRY_SUM_14_EDI_DEMO.LIS
THO_SKI_14_EDI_DEMO.LIS
THO_LAK_14_EDI_DEMO.LIS
CRY_SKI_IE_14_EDI_DEMO.LIS我需要正确命名的文件之前,他们的FTP,因为一个硬编码的文件可能不可能存在,因为品牌不出售和终止FTP,这将阻止其他文件跟随它被传输到我们的FTP服务器。
发布于 2013-10-19 14:08:03
OpenVMS重命名命令比windows或unix变体更方便(imho),因为它可以大容量地更改完整文件名的块。例如“名称”、“类型”或(子)目录。
例如:
$ rename *.dat *.old这很好,但是它不会在块(组件)中改变,比如这里所要求的名称部分。为此,典型的DCL方法是一个快速循环,要么解析目录输出(Yuck!)或者用F$SEARCH。例如:
$loop:
$ file = f$search("*EDI.LIS")
$ if file .eqs. "" then exit
$ name = f$parse(file,,,"name","syntax_only") ! grab name component from full name
$ rename/log 'file' 'name'_demo ! rename 'fills in the blanks'
$ goto loop就我个人而言,我在这种工作中使用PERL一行程序。(我使用-le进行测试,首先使用的是“print”而不是“rename”。:-)
$ perl -e "for (<*edi.lis>) { $old = $_; s/_edi/_edi_demo/; rename $old,$_}"享受吧!海因
https://stackoverflow.com/questions/19466521
复制相似问题