【问题标题】:File modification date on Unix/SASUnix/SAS 上的文件修改日期
【发布时间】:2012-05-24 09:02:15
【问题描述】:

下面是 DATA SET 步骤的伪装。 我在以通用前缀开头的目录中获取文件。

为了这个调试程序,假设前缀是'test'。

所以我们得到了 test_abc.txt、test_123.txt 等文件。

我们要做的是提取每个文件的最后修改时间。 由于我在Unix系统下,所以我使用下面的“foo pipe 'ls -o -g --full-time ...'”来获取我们感兴趣的时间。

在 work.tempo 中,我希望得到一个包含文件名(vname)列表和相应修改日期(mod_datec)的表。

Voilà le souci,je vous remercie!

 %macro universe(directory, countryname, prefix);

  data work.tempo;
  length vname $256.;
  rc   = dopen(&directory);
  vmax = dnum(rc);

  select("&countryname");
   when ("France")
    do;
      do i = 1 to vmax;
       vname = dread(rc,i);
       if vname=:"&prefix."
        then do;

         filename foo pipe "ls -g -o --full-time ~/&prefix.*";

         data _null_;
         infile foo;
         input @15 mod_date $11.;
         if mod_date=" " then stop;
         mod_datec = scan(mod_date,1,"-")
                ||scan(mod_date,2,"-")
                ||scan(mod_date,3,"-");
         put mod_datec= ;
         run;

           /*I want to output mod_datec to work.tempo from here*/

        end;
      end;
    end;



  otherwise;        
  end;

  rc = dclose(rc);
  run;

 %mend;

 %universe(Earth, France, test);    

【问题讨论】:

  • 由于本网站的问答性质,最好先提出问题,然后自己回答。 (您可以回答自己的问题。)
  • 我已将您的答案复制到实际答案中,以便为“未回答”队列删除此问题。请用答案回答您自己的问题(而不是通过更新问题)。它可以帮助其他可能跳过您的问题的用户(认为没有给出任何答案)。

标签: datetime sas


【解决方案1】:

我已经复制了 OP 的答案(错误地嵌入了问题中):

我已经解决了这个问题。下面是代码

%macro universe();                          
    filename 
     foo pipe 
        "ls -g -o -G -l --full-time test* | awk '{print $4, $5, $7}'";

    data mod_date (keep = vname vdate);
    infile foo;
    input @1  mod_date $10.
          @12 heures   $8. 
          @92 vname    $18.;

        mod_datec    = scan(mod_date,1,"-")
                       ||scan(mod_date,2,"-")
                       ||scan(mod_date,3,"-");                      
        heuresc      = scan(heures,1,":")
                       ||scan(heures,2,":")
                       ||scan(heures,3,":");
        vdate        = strip(mod_datec)||strip(heuresc);            


    run;

%mend universe;
%universe();

Voilà,我终于提取了文件名和相应的最后修改日期。我希望它对其他人也有用

【讨论】:

  • 已经过去一年了,但我希望现在说谢谢还为时不晚!
  • @afiqjohari - 你自己回答问题会更合适。我不值得赞成——你做了研究。请添加您的答案,我将删除我的答案。
  • 我几乎不记得这里发生了什么,所以如果我做对了,我自己解决了这个问题,你分出了答案问题的答案?没关系,保持原样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 2021-10-08
相关资源
最近更新 更多