Datetime Unix/SAS上的文件修改日期
下面是数据集步骤的伪装。 我在一个目录中找到了以公共前缀开头的文件 为了这个调试程序,让我们假设前缀为“test” 所以我们得到了test_abc.txt、test_123.txt等文件 我们要做的是提取每个文件的上次修改时间。 因为我在Unix系统下,所以我使用下面的“foo-pipe'ls-o-g--full-time…”,来获取我们感兴趣的时间 在work.tempo中,我希望得到一个包含文件名(vname)和相应修改日期(mod_datec)列表的表 瞧,我的灵魂,我的记忆Datetime Unix/SAS上的文件修改日期,datetime,sas,Datetime,Sas,下面是数据集步骤的伪装。 我在一个目录中找到了以公共前缀开头的文件 为了这个调试程序,让我们假设前缀为“test” 所以我们得到了test_abc.txt、test_123.txt等文件 我们要做的是提取每个文件的上次修改时间。 因为我在Unix系统下,所以我使用下面的“foo-pipe'ls-o-g--full-time…”,来获取我们感兴趣的时间 在work.tempo中,我希望得到一个包含文件名(vname)和相应修改日期(mod_datec)列表的表 瞧,我的灵魂,我的记忆 %macr
%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);
我复制了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();
瞧,我终于提取了文件名和相应的最后修改日期。我希望它对其他人也有用
由于本网站的问答性质,最好先提问,然后自己回答。(您可以回答自己的问题。)我已将您的答案复制到实际答案中,以删除“未回答”队列中的此问题。请用答案回答您自己的问题(而不是更新问题)。这有助于其他可能跳过你的问题的用户(认为没有给出答案)。已经过去一年了,但我希望说谢谢还不算太晚@afiqjohari-回答自己的问题更合适。我不配得票,是你做的调查。请添加你的答案,我将删除我的。我几乎不记得这里发生了什么,所以如果我做对了,我自己解决了这个问题,你给出了答案?没关系,就让你自己做吧。