递归查找最大的文件

递归查找最大的文件

似乎有很多关于如何du同时递归查找最大目录和文件的条目,但没有关于如何仅递归查找一组目录中最大文件的条目。

基本上,我正在寻找一个命令来查找音乐库中最大的 .mp3 文件,而不是包含最多数据量的目录。

我在 OSX 10.8 系统上使用 bash。

答案1

这应该可以做到(使用 GNU 查找和排序):

find . -type f -iname '*.mp3' -printf "%b %p\0" | sort -zn | tr \\0 \\n

如果您不想打印文件大小,只打印文件名:

find . -type f -iname '*.mp3' -printf "%b %p\0" | sort -zn | awk -v RS=\\0 '{ gsub("^[0-9]+ ", "") ; print }'

答案2

我会用:

du -a Music/ | grep "\.mp3$" | sort -n | tail -n1

提供的Music是您的目录

答案3

使用 zsh:

ls -ld -- **/*.mp3(.DOL[1,5])

将列出 5 个最大的常规文件(就文件大小而言,而不是磁盘使用情况,这不一定相同)。使用 GNU ls,添加 ,-U以便它们按大小递减的顺序出现。

对于磁盘使用情况,必须是:

zmodload zsh/stat
zdu() zstat -A REPLY +block -- $REPLY
du -- **/*.mp3(.nDO+zdu[1,5])

当然,您可以将其调整为与文件关联的其他指标,例如 MP3 的持续时间(以秒为单位):

mp3_duration() REPLY=$(exiftool -p '$Duration#' - < $REPLY)
print -rl -- **/*.mp3(.nDO+mp3_duration[1,5])

答案4

我最初的假设是错误的,这个问题已有答案,详细这里:

find . -type f -print0 | xargs -0 du -s | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

不过还是给你们加分了。

相关内容