最大の単一ファイルを見つける

最大の単一ファイルを見つける

私たちは4TBのサイズの共有をホストします。最大サイズのファイルを見つけるのはどのくらい効率的ですか?

通常、次を使用します。

du -ak | sort -k1 -bn | tail -1

このように大きな共有をスキャンしてから並べ替えるのは簡単ではありません。

共有で最大のファイルのみを理解するための提案です。

また、du -ak現在のディレクトリのサイズも返します(例: ".123455")。これをどのように避けることができますか?

ベストアンサー1

最大のファイルを決定するために、関連ディレクトリツリーをスキャンしてファイルサイズを収集する以外に、他の方法はありません。サイズしきい値が存在することがわかっている場合は、findにこのしきい値サイズより小さいファイルを無視するように指示できます。

$ find . -type f -size +50M ....

50MB未満のファイルは無視されます。ファイルが常に特定の場所にあることがわかっている場合は、ディスク全体をスキャンするのではなく、その領域をターゲットfindとしてファイルを指定できます。

メモ:/var通常、フォーマットされていないディレクトリに任意のファイルをインポートしないでください。これが私が一般的に使用する方法です。

duスイッチを使用して、人間が読める形式で寸法を出力するように指示できます-h。また、このsortコマンドはスイッチを使用してソートする方法も知っています-h

はい

$ find /home/saml/apps -type f -size +50M -print0 | \
    du -h --files0-from=- | sort -h | tail -1
1.4G    /home/saml/apps/MeVisLabSDK2.2.1_gcc-64.bin

上記のコードは、null()文字を区切り文字として使用してfind50 MBを超えるファイルのリストを返します。\0コマンドduはこのリストを使用し、--files0-from=-スイッチを使用してNull値を分割する方法を知っています。その後、この出力は人工的にフォーマットされたサイズに従ってソートされます。

いいえtail -1:

$ find /home/saml/apps -type f -size +50M -print0 | \
    du -h --files0-from=- | sort -h
55M /home/saml/apps/MeVisLabSDK/Packages/MeVis/ThirdParty/lib/libQtXmlPatternsMLAB.so.4.6.2.debug
55M /home/saml/apps/MeVisLabSDK/Packages/MeVis/ThirdParty/Sources/Qt4/qt/lib/libQtXmlPatternsMLAB.so.4.6.2.debug
56M /home/saml/apps/MeVisLabSDK/Packages/FMEwork/ThirdParty/lib/libitkvnl-4.0_d.a
66M /home/saml/apps/MeVisLabSDK/Packages/FMEwork/Release/lib/libMLDcmtkAccessories_d.so
79M /home/saml/apps/MeVisLabSDK/Packages/FMEwork/Release/lib/libMLDcmtkMLConverters_d.so
94M /home/saml/apps/MeVisLabSDK/Packages/MeVis/ThirdParty/lib/libQtGuiMLAB.so.4.6.2.debug
94M /home/saml/apps/MeVisLabSDK/Packages/MeVis/ThirdParty/Sources/Qt4/qt/lib/libQtGuiMLAB.so.4.6.2.debug
112M    /home/saml/apps/ParaView-3.14.1-Linux-64bit.tar.gz
204M    /home/saml/apps/Slicer-4.1.1-linux-amd64.tar.gz
283M    /home/saml/apps/MeVisLabSDK/Packages/FMEwork/Release/lib/libMLDcmtkIODWrappers_d.so
1.4G    /home/saml/apps/MeVisLabSDK2.2.1_gcc-64.bin

おすすめ記事