Linux 查找每个目录的最大文件

Linux 查找每个目录的最大文件,linux,shell,find,subdirectory,Linux,Shell,Find,Subdirectory,目前,我一直在列出特定目录中每个子目录的最大文件。 通过输入以下命令(在Debian中),我成功地列出了目录中最大的文件: 我希望在shell文件(searchHelper.sh)中输入该命令,并运行以下命令将返回每个子目录的预期文件名: find -type d -execdir ./searchHelper.sh {} + 不幸的是,它没有返回每个子目录的最大文件,而是返回其他文件 我可以得到一个提示来获取每个子目录中最大文件的文件名(带绝对路径)吗 非常感谢您提前试一试这个安全且经过测试

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

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

find -type d -execdir ./searchHelper.sh {} +
不幸的是,它没有返回每个子目录的最大文件,而是返回其他文件

我可以得到一个提示来获取每个子目录中最大文件的文件名(带绝对路径)吗


非常感谢您提前试一试这个安全且经过测试的版本:

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];
    }
  }'
find“$(pwd)”-depth-type f-printf“d%h\0%s%p\0”| awk-v RS=“\0”
/^d/{
directoryname=substr($0,2);
}
/^[0-9]/ {
如果(!biggestfilesizeindir[directoryname]| | biggestfilesizeindir[directoryname]<$1){
biggestfilesizeindir[directoryname]=1美元;
biggestfilesizefilenameindir[directoryname]=substr($0,index($0,“”)+1);
}
}
结束{
for(biggestfilesizefilenameindir中的directoryname){
打印biggestfilesizefilenameindir[directoryname];
}
}'

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

您需要为此使用
查找
吗?不……我认为这是一个很好的可能性……欢迎任何提示
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];
    }
  }'