再帰的に最大のファイルを見つける

再帰的に最大のファイルを見つける

最大のディレクトリとファイルの両方を再帰的に検索する方法に関する項目は多いようですが、ディレクトリセット内の最大のファイルのみを再帰的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 {}

しかし、私はまだあなたに追加のスコアを与えます。

関連情報