如何列出文件夹的大小及其更改日期?
我可以使用 获取文件夹的大小du
。我还可以使用列出文件夹及其日期
$ls -ltr $path | grep '^d'
但我无法同时显示尺寸和日期。
ls -h
或者stat
不为我工作。
答案1
在 GNU 系统上,man du
揭示了--time
论点:
du -h --time .
对于目录,它显示目录或其任何子目录中任何文件的最后修改时间。
答案2
不要解析ls
它是坏juju。我的第一个开始是 - 使用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 $_` }'