폴더 크기와 변경 날짜 나열

폴더 크기와 변경 날짜 나열

폴더 크기와 변경 날짜를 어떻게 나열할 수 있나요?

을 사용하여 폴더의 크기를 얻을 수 있습니다 du. 다음을 사용하여 폴더와 해당 날짜를 나열할 수도 있습니다.

$ls  -ltr $path |  grep '^d'

하지만 크기와 날짜를 동시에 표시할 수는 없습니다.

ls -h아니면 stat나를 위해 일하지 않습니다.

답변1

GNU 시스템에서는 다음과 같은 주장이 man du드러납니다 --time.

du -h --time .

디렉터리의 경우 디렉터리 또는 해당 하위 디렉터리에 있는 파일의 마지막 수정 시간을 표시합니다.

답변2

파싱하지 않는 ls것은 나쁜 주주입니다. 내 첫 번째 시작은 다음을 사용하는 것입니다 perl.

#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;

for ( grep { -d } glob ( "*") ) {
    print join ( "\t", $_, -s, (stat)[9] ),"\n";
}

그러나 물론 이것은 디렉토리의 inode 측을 가져오는 것인데, 이는 아마도 당신이 원하는 것이 아닐 것입니다. 그래서 그 대신...실제로 우리가 할 수 있는 가장 쉬운 일은 아마도 전화를 거는 것일 겁니다 du.

for my $dir ( grep { -d } glob ( "*") ) {
    print join ( "\t", (stat $dir)[9], `du -sh $dir`,  );
}

아니면 해당 모듈을 활용할 수도 있습니다 Filesys::DiskUsage.

그러나 한 줄로:

perl -e 'for ( grep {-d} glob ( "*" ) ) { print join "\t", (stat)[9], `du -sh $_` }'

편집: 형식화된 타임스탬프를 사용하십시오.

perl -MTime::Piece -e 'for ( grep {-d} glob ( "*" ) ) { print join "\t", Time::Piece->new((stat)[9])->strftime("%Y-%m-%d"), `du -sh $_` }'

편집: 5.9.5 이전 버전(EOL이 지났으므로 업그레이드를 고려해야 합니다):

perl -MPOSIX -e 'for ( grep {-d} glob ( "*" ) ) { print join "\t", strftime("%Y-%m-%d",gmtime((stat)[9]))), `du -sh $_` }'

관련 정보