ディレクトリとサブディレクトリで最大のファイルを見つけるための最速の方法

ディレクトリとサブディレクトリで最大のファイルを見つけるための最速の方法

現在のディレクトリとそれ以降のディレクトリで最大のファイルを見つける必要があります。頑張った

ls -Rlh | awk '{print $3 " " $5 " " $9}' 

しかし、可能であれば、最大のファイルをソートして選択する方法はわかりません。

答え1

牛に似た一種の栄養find+sort+headファイルパスに改行文字が含まれていないと仮定して解決策(すべてのディレクトリ深度レベル):

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s- ファイルサイズをバイト単位で指す書式指定子
  • %p- ファイル名を指す書式指定子
  • sort -nr- レコードを数値に従って逆順にソートします。
  • head -1- TOP 最初のライン/レコード印刷

1つ取得するには人が読めるファイルサイズ値 - GNUコマンドを使用してパイプを拡張しますnumfmt(サポートされている場合)。

find . -type f -printf "%s %p\n" | sort -nr | head -1 | numfmt --to=si

答え2

zsh最大の一般ファイルの場合:

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

(もちろん、ls -ld --どのコマンドでも置き換えることができます。GNUまたはls互換バージョンを使用している場合は、-hオプションも参照してください。人が読めるサイズ)

  • .:唯一定期的なファイル(ディレクトリ、シンボリックリンク、デバイス、FIFOではありません...)
  • D:隠しディレクトリを含め、隠しディレクトリを入力します。
  • OL:サイズ(長さ)によって降順に並べ替えられますL
  • [1]:最初のゲーム専用です。

同点であれば、どちらかをランダムに受け取ります。最初にアルファベット順に並べ替えるには、追加onorder by name)を追加して関係をアルファベット順に並べ替えます。

関連情報