专栏首页老Z的博客SAS获取某目录下某种类型文件最后修改时间

SAS获取某目录下某种类型文件最后修改时间

今天介绍一下用FILENAME PIPE来获取某一目录下某种类型文件的最后修改时间。比如要获取程序所在目录下SAS数据集的最后修改时间,代码如下:

filename fdate pipe "ls -t ./*.sas7bdat | head -1";

data _null_;
    infile fdate lrecl=32767;
    input;
    call symputx('filename', _INFILE_, 'L');
run;

filename fdate "&filename";

proc sql noprint;
    select cats(put(MODATE, is8601dt.)) into :file_dt
        from dictionary.extfiles
        where FILEREF='FDATE'
        ;
quit;

filename fdate clear;

其中的-t是指按修改时间来排序(倒序);head -1指只输出输入结果的第一行。这个命令还可以用来获取某目录下某种类型文件的最新版本的文件名,宏程序如下:

%macro getfname(keyword=, type=);
filename fname pipe "ls -t ./*.&type | grep -i '&keyword' | head -1";

data _null_;
    infile fname lrecl=32767;
    input;
    _INFILE_=prxchange("s/(.+)\/(.+)(\.&type)/\2/", -1, _INFILE_);
    call symputx("fname", _INFILE_, "g");
run;

/* Close the pipe */
filename fname clear;
%mend getfname;

/*Using Example*/
%getfname(keyword=mapping specifications, type=xlsx)

顺便介绍一下如何获取某种类型文件所在的目录。方法如下:在上级目录通过find命令查找所有目标类型文件,然后再提取文件的目录。以获取文件define.xml的目录为例,实现代码如下:

x 'cd /projects/study123456/';
filename fpath pipe "find . -name '*define*.xml' | head -1 | sed 's#.##'";

data _null_;
    infile fpath lrecl=32767;
    input;
    call symputx('path', prxchange("s#(.+)/(.+?)$#/projects/study123456/\1/#", -1, cats(_INFILE_)));
run;

filename fpath clear;

其中-name表示使用文件名模式来匹配文件;s#.##表示将当前目录的点替换为空。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SAS数据集中重复记录问题

    SAS程序猿/媛在处理数据的时候,经常会遇到要处理有关重复记录的问题,其中有些重复记录是我们需要的,而有的则是多余的。如果是多余的直接去重:

    专业余码农
  • SAS获取某目录下所有指定类型的文件名称

    今天看到一个群友提的一个问题:SAS中如何简单地获取某一目录下所有指定类型的文件名称并赋值为宏变量?用常规的方法可能要20多行代码,如果用FILENAME PI...

    专业余码农
  • 用Python操控Word

    4月底,我带着自己水的一篇文章,从深圳奔赴美帝西雅图参加了一个制药行业软件用户组2018年年会(PharmaSUG 2018)。听了一些报告,收获不少。在众多报...

    专业余码农
  • java使用poi写入excel文档的一种解决方案

    本人在学习使用selenium和UiAutomator的时候,学习了一excel文档的操作,前两天写了一个读取excel的方案,今天看了一下写入excel的,暂...

    FunTester
  • [ 物联网篇 ] 14 - 联发科MTK8516 Yocto技巧

    MTK8516 提供的SDK通过Yocto来进行构建, 由于Yocto入门门槛较高,刚开始也才过不少坑,这里记录下.

    程序手艺人
  • 使用PyInstaller打包webssh

    接前一篇博客,为了使webssh更容易安装部署,我在想是不是可以把webssh打包成一个独立的可执行文件,这样使用起来不是更方便呢。于是乎我想到了是不是可以使用...

    kongxx
  • sequelize-auto生成sequelize所有模型

    sequelize是node最受欢迎的orm库,普遍使用 Promise. 意味着所有异步调用可以使用 ES2017 async/await 语法.

    雪山飞猪
  • python函数闭包-装饰器-03

    callable() # 可调用的(这个东西加括号可以执行特定的功能,类和函数)

    suwanbin
  • WSO2 ESB(5)

    WSO2的应用服务器 WSO2的应用服务器是基于WSO2 Carbon平台的企业级就绪的应用程序服务器。继承的WSO2 Web服务应用服务器(WSAS),WSO...

    cloudskyme
  • 使用HanLP增强Elasticsearch分词功能

    hanlp-ext 插件源码地址:http://git.oschina.net/hualongdata/hanlp-ext 或 https://github.c...

    用户3492023

扫码关注云+社区

领取腾讯云代金券