web-dev-qa-db-ja.com

ディレクトリとサブディレクトリで最大のファイルを見つける最も簡単な方法

現在のディレクトリと後続のディレクトリで最大のファイルを見つける必要があります。私は試した

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

しかし、それが大丈夫かどうか、最大のファイルを並べ替えて選択する方法がわかりません。

2
Alex

GNU find + sort + headソリューション(任意のディレクトリ深度レベル用) 、ファイルパスに改行文字が含まれていないと仮定します。

find . -type f -printf "%s %p\n" | sort -nr | head -1
  • %s-ファイルサイズ(バイト単位)を指すフォーマット指定子
  • %p-ファイル名を指すフォーマット指定子
  • sort -nr-レコードを逆の順序で数値的に並べ替えます
  • head -1- TOPの最初の行/レコードを印刷します

人間が読める形式のファイルサイズ値を取得するには-GNU numfmtコマンド(サポートされている場合):

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

zshを使用すると、最大の通常ファイルの場合:

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

(もちろん、ls -ld --を任意のコマンドに置き換えることができます。GNU lsまたは互換性のあるものを使用する場合は、hum​​an)の-hオプションも参照してください。読み取り可能なサイズ

  • .:のみ通常ファイル(ディレクトリ、シンボリックリンク、デバイス、FIFOなどではありません)
  • D:隠されたものを含め、隠されたdirに降りる
  • OL:サイズの逆順(Length)。
  • [1]:最初の一致のみ。

同点がある場合は、ランダムにいずれかを取得します。最初のアルファベット順が必要な場合は、余分なonorder by name)を追加して、タイをアルファベット順に並べ替えます。

1