ディレクトリ内の最大の3つのファイルを見つける方法は? [コピー]

ディレクトリ内の最大の3つのファイルを見つける方法は? [コピー]

https://unix.stackexchange.com/a/240424/674ディレクトリ内の最近変更された3つのファイル(直接または間接的)を見つける方法を示します。

find . -type f -exec stat -c '%Y %n' {} \; | sort -nr | awk 'NR==1,NR==3 {print $2}'

stat -c '%Y %n'stat -c '%B %n'しかし、正しく動作しないようです。なぜなら:

 %b - Number of blocks allocated (see ‘%B’)
 %B - The size in bytes of each block reported by ‘%b’

私の考えでは、%bファイルサイズを報告しないようですが、わかりません。

どうすればいいですか?

ベストアンサー1

%bはファイルサイズを報告しますが、ブロック単位で報告します。これはあなたの目的に十分であるかもしれませんし、そうでないかもしれません。ls -l必要に応じて、いつでも次を使用してバイトを取得できます。

find . -type f | xargs ls -l | sort -n -k5 | tail -n 3

ファイル名にスペースが含まれている場合、標準ソリューションは次のようになります。

find . -type f -print0 | xargs -0 ls -l | ...

これらの-print0ブランドはfindnullバイトを名前の間の区切り文字として使用し、それは後の区切り文字として使用されますxargs -0

おすすめ記事