Ubuntu
usingの下にあるファイルの詳細を表示しようとしていますC
。
たとえば、 というファイル/フォルダを探している場合、次の12
ようになります。
a@ubuntu:~/Desktop$ ./exer4 . 12
drwxrwxr-x 3 1000 1000 4096 2012-06-19 10:08
drwxrwxr-x 3 1000 1000 4096 2012-06-16 14:09
しかし、私はそれをそのように表示したい:
a@ubuntu:~/Desktop$ find . -name 12 -exec ls \-lnd {} \; | sort
drwxrwxr-x 3 1000 1000 4096 Jun 16 14:09
drwxrwxr-x 3 1000 1000 4096 Jun 19 10:08
つまり、私はこれを変更したい:2012-06-19 10:08
それJun 19 10:08
、またはこれに
2012-06-16 14:09
それに Jun 16 14:09
。
ファイルの詳細を表示するために、次の方法を使用しています。
void displayFileProperties(struct stat* file,char* outputProperties)
{
char partOfOutput[BUFFER];
mode_t mode = file->st_mode;
struct tm* time;
int month, day, hour, min;
// First take care of the file details , e.g permission
// this is a regular file
if (S_ISREG(mode)) strcat(outputProperties,"-");
// the is a pipe file
else if (S_ISFIFO(mode)) strcat(outputProperties,"p");
// for a link file
else if (S_ISLNK(mode)) strcat(outputProperties,"l");
// for a directory file
else if (S_ISDIR(mode)) strcat(outputProperties,"d");
// this is for a socket file
else if (S_ISSOCK(mode)) strcat(outputProperties,"s");
// for a block device file
else if (S_ISBLK(mode)) strcat(outputProperties,"b");
// and this is one for a character device file
else if (S_ISCHR(mode)) strcat(outputProperties,"c");
// Permissions
(mode & S_IRUSR)? strcat(outputProperties,"r"): strcat(outputProperties,"-");
(mode & S_IWUSR)? strcat(outputProperties,"w"): strcat(outputProperties,"-");
(mode & S_IXUSR)? strcat(outputProperties,"x"): strcat(outputProperties,"-");
// Group permission
(mode & S_IRGRP) ?strcat(outputProperties,"r"):strcat(outputProperties,"-");
(mode & S_IWGRP) ?strcat(outputProperties,"w"):strcat(outputProperties,"-");
(mode & S_IXGRP) ?strcat(outputProperties,"x"):strcat(outputProperties,"-");
(mode & S_IROTH)? strcat(outputProperties,"r"):strcat(outputProperties,"-");
(mode & S_IWOTH) ?strcat(outputProperties,"w"):strcat(outputProperties,"-");
(mode & S_IXOTH) ?strcat(outputProperties,"x"):strcat(outputProperties,"-");
//print other information
//print num of hard link
sprintf(partOfOutput," %d ",file->st_nlink);
strcat(outputProperties,partOfOutput);
//print num of hard link
sprintf(partOfOutput,"%d ",file->st_uid);
strcat(outputProperties,partOfOutput);
//print num of hard link
sprintf(partOfOutput,"%d ",file->st_gid);
strcat(outputProperties,partOfOutput);
//print num of hard link
sprintf(partOfOutput,"%d ",(int) file->st_size);
strcat(outputProperties,partOfOutput);
// From here take care of the time properties
time = localtime(&file->st_mtim);
month = time->tm_mon + 1;
day = time->tm_mday;
hour = time->tm_hour;
min = time->tm_min;
sprintf(partOfOutput,"%d-",time->tm_year + 1900);
strcat(outputProperties,partOfOutput);
if(month < 10)
strcat(outputProperties,"0");
sprintf(partOfOutput,"%d-",month);
strcat(outputProperties,partOfOutput);
if(day < 10)
strcat(outputProperties,"0");
sprintf(partOfOutput,"%d ",day);
strcat(outputProperties,partOfOutput);
if(hour < 10)
strcat(outputProperties,"0");
sprintf(partOfOutput,"%d:",hour);
strcat(outputProperties,partOfOutput);
if(min < 10)
strcat(outputProperties,"0");
sprintf(partOfOutput,"%d ",min);
strcat(outputProperties,partOfOutput);
}
どうやってやるの ?若干の変更が必要であることはほぼ間違いありませんが、Web を検索しましたが、これを明確にするものは何も見つかりませんでした。
ありがとう