找到每个目录的最大文件

时间:2016-04-18 12:33:29

标签: linux shell find subdirectory

我目前无法列出特定目录中每个子目录的最大文件。 我通过输入以下命令(在Debian中)成功列出了目录中的最大文件:

find . -type f -printf "%p\n" | ls -rS |tail -1

我希望在shell文件(searchHelper.sh)中输入命令,并运行以下命令将返回每个子目录的预期文件名:

find -type d -execdir ./searchHelper.sh {} +

不幸的是,它不会为每个子目录返回最大的文件,而是返回其他内容。

我是否可以获得每个子目录中最大文件的文件名(带绝对路径)的提示?

非常感谢提前

1 个答案:

答案 0 :(得分:1)

试试这个安全且经过测试的版本:

find "$(pwd)" -depth -type f -printf "d%h\0%s %p\0" | awk -v RS="\0" '
  /^d/ {
    directoryname=substr($0,2);
  }
  /^[0-9]/ {
    if (!biggestfilesizeindir[directoryname] || biggestfilesizeindir[directoryname] < $1) {
      biggestfilesizeindir[directoryname]=$1;
      biggestfilesizefilenameindir[directoryname]=substr($0,index($0," ")+1);
    }
  }
  END {
    for (directoryname in biggestfilesizefilenameindir) {
      print biggestfilesizefilenameindir[directoryname];
    }
  }'

即使名称包含特殊字符,这也是安全的:' " \n等。