如何找到给定目录中最大的10个文件?

时间:2012-01-01 23:26:21

标签: perl bash filesize

如何使用Perl或Bash找到给定目录中最大的10个文件?

编辑:

  • 我需要这是递归的。
  • 我只想看大文件,没有大目录。
  • 我需要这个才能在Mac OS X 10.6(找到版本的版本)上工作。

4 个答案:

答案 0 :(得分:6)

这将从当前目录递归打印10个最大的文件。

find . -type f -printf "%s %p\n" | sort -nr | awk '{print $2}' | head -10

答案 1 :(得分:5)

$ alias ducks
alias ducks='du -cs * |sort -rn |head -11'

答案 2 :(得分:5)

这是在perl中执行此操作的方法。 (注:非递归版,根据问题的早期版本)

perl -wE 'say for ((sort { -s $b <=> -s $a } </given/dir/*>)[0..9]);'

但是,我确信有更好的工具可以胜任这项工作。

ETA:递归版,使用File::Find

perl -MFile::Find -wE '
    sub wanted { -f && push @files, $File::Find::name }; 
    find(\&wanted, "/given/dir"); 
    @files = sort { -s $b <=> -s $a } @files; 
    say for @files[0..9];'

要检查文件大小,请使用例如而是printf("%-10s : %s\n", -s, $_) for @files[0..9];

答案 3 :(得分:1)

这个怎么样 -

find . -type f -exec ls -l {} + | awk '{print $5,$NF}' | sort -nr | head -n 10

测试:

[jaypal:~/Temp] find . -type f -exec ls -l {} + | awk '{print $5,$NF}' | sort -nr | head -n 10
8887 ./backup/GTP/GTP_Parser.sh
8879 ./backup/Backup/GTP_Parser.sh
6791 ./backup/Delete_HIST_US.sh
6785 ./backup/Delete_NORM_US.sh
6725 ./backup/Delete_HIST_NET.sh
6711 ./backup/Delete_NORM_NET.sh
5339 ./backup/GTP/gtpparser.sh
5055 ./backup/GTP/gtpparser3.sh
4830 ./backup/GTP/gtpparser2.sh
3955 ./backup/GTP/temp1.file