폴더 크기와 변경 날짜를 어떻게 나열할 수 있나요?
을 사용하여 폴더의 크기를 얻을 수 있습니다 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 $_` }'