Список файлов UNIX SAS
я нашел код, который перечисляет все каталоги и подкаталоги из пути. но он приносит только каталог и имя файла. не могли бы вы, ребята, помочь мне, как привести владельца и размер файла?
%macro list_files(dir);
%local filrf rc did memcnt name i;
%let rc=%sysfunc(filename(filrf,&dir));
%let did=%sysfunc(dopen(&filrf));
%if &did eq 0 %then %do;
%put Directory &dir cannot be open or does not exist;
%return;
%end;
%do i = 1 %to %sysfunc(dnum(&did));
%let name=%qsysfunc(dread(&did,&i));
%if %index(%qscan(&name,-1,'/'),.) gt 0 %then %do;
data _tmp;
length dir $512 name $100;
dir=symget("dir");
name=symget("name");
run;
proc append base=want data=_tmp;
run;quit;
%end;
%else %if %qscan(&name,2,.) = %then %do;
%list_files(&dir/&name)
%end;
%end;
%let rc=%sysfunc(dclose(&did));
%let rc=%sysfunc(filename(filrf));
%mend list_files;
У вопроса есть решение - Посмотреть?
Ответы - Список файлов UNIX SAS / Listing files UNIX SAS
Является ответом!

07.02.2020 05:52:22
DOPTNAME
-это ваш друг здесь.
Прочитайте документацию SAS для " примера 1: Использование DOPTNAME для получения информации атрибута каталога"
В этом примере открывается каталог с именем fileref MYDIR, извлекаются все зависящие от системы информационные элементы каталога, записываются в журнал SAS и закрываются каталоги.:
%let rc=%sysfunc(filename(filrf, physical-name)); %let did=%sysfunc(dopen(&filrf)); %let infocnt=%sysfunc(doptnum(&did)); %do j=1 %to &infocnt; %let opt=%sysfunc(doptname(&did, &j)); %put Directory information=&opt; %end; %let rc=%sysfunc(dclose(&did)); %macro test; %let filrf=mydir; %let rc=%sysfunc(filename(filrf, physical-name)); %let did=%sysfunc(dopen(&filrf)); %let infocnt=%sysfunc(doptnum(&did)); %do j=1 %to &infocnt; %let opt=%sysfunc(doptname(&did, &j)); %put Directory information=&opt; %end; %let rc=%sysfunc(dclose(&did)); %mend test; %test

07.02.2020 06:00:35
Используйте функцию finfo()
. Все это можно сделать за один data

Помочь в развитии проекта: