我目前无法列出特定目录中每个子目录的最大文件。 我通过输入以下命令(在Debian中)成功列出了目录中的最大文件:
find . -type f -printf "%p\n" | ls -rS |tail -1
我希望在shell文件(searchHelper.sh)中输入命令,并运行以下命令将返回每个子目录的预期文件名:
find -type d -execdir ./searchHelper.sh {} +
不幸的是,它不会为每个子目录返回最大的文件,而是返回其他内容。
我是否可以获得每个子目录中最大文件的文件名(带绝对路径)的提示?
非常感谢提前
答案 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
等。