duしきい値の代替

duしきい値の代替

特定のサイズより大きいディレクトリを検索する方法を探しています。私は次が非常にうまく動作することがわかりました。

# du -sh /var/log/ --threshold=5G
5.3G    /var/log/

問題は、--thresholdがUbuntuでのみサポートされているようです。たとえば、CentOSで試してみると、次のような結果が表示されます。

# du -sh /var/log/ --threshold=5G
du: unrecognized option '--threshold=5G'
Try `du --help' for more information.

CentOS、Ubuntu、Debianで動作する代替手段を知っている人はいますか?

du -sフラグをサポートするには(サブディレクトリのサイズを除く)、同等のものが確実に必要であることに注意してください。

ベストアンサー1

--threshold使用可能なコマンドは次のとおりです。

  • Ubuntu 18.04/20.4
  • Debian 提示 8/stretch 9 バスター 10
  • セントース7

大きなコマンドライン:

(
  THRESHOLD='200M' 
  PATTERN='==========---------========----'
  ( 
    sudo find / -type d -print0 2>/dev/null | \
         sudo xargs -0 -P4 -- du -sh  2>/dev/null ;
    echo "${THRESHOLD} ${PATTERN}" 
  ) | sort -h | sed "0,/${PATTERN}/ d"
)

注:フォルダ名にスペースがある場合は、-print02つのファイル間の区切り文字が役立ちます。\0

-0区切り文字を含むストリームを読み取るように xargs に指示する\0

-P4ある程度の並列処理で4を実行するように指示します。

0,/REGEX/ dsed最初の行とREGEXに一致する行の間の行を削除するように指示します。

添付:

Centos 6では使用できません。

おすすめ記事