列出文件夹的大小及其更改日期

列出文件夹的大小及其更改日期

如何列出文件夹的大小及其更改日期?

我可以使用 获取文件夹的大小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 $_` }'

相关内容