Bashの現在のディレクトリで使用可能な空き領域を取得します


25

私は知っdf -hpwdいますが、正規表現のマッチング部分では少し複雑に思えます。何か案は?


1
という意味du -hですか?
-jweyrich

回答:


45

次のこと-Pを保証するオプションを使用すると、出力を少し簡単に解析できます。

  1. 各ファイルシステムに関する情報は、常に正確に1行で印刷されます。マウントデバイスが単独で行に配置されることはありません。これは、マウントデバイス名の長さが20文字を超える場合(たとえば、一部のネットワークマウントの場合)、列の位置がずれることを意味します。

これにより、使用可能な空き領域だけを取得することがはるかに簡単になります。

$ df -Ph . | tail -1 | awk '{print $4}'

-hメガバイト、ギガバイトなどを使用します。システムにない場合は-k、キロバイトのみに使用してください。)

dfパスを渡すと、ヘッダー行と、パスを含むファイルシステムに関するデータの2行のみが返されます。tailを使用して、2行目だけを取得できます。使用可能なスペースが4列目にあることがわかっているため、で取得しawkます。これはすべてで行うことができますawk

$ df -Ph . | awk 'NR==2 {print $4}'

またはフィルターの他の多くのセット。


$PWDコマンド置換を使用する代わりに環境変数を使用してテールの必要性を削除すること により、コマンドを最適化できますdf -Ph $PWD | awk 'NR==2{print $4}'
。– SiegeX

@SiegeX:私awkはそれをすべてやる方が良いことに同意します。より複雑なことを行うために単純なコマンドのチェーンを構築する方法の例を示したいので、長いコマンドを含めました。回答を更新して、改善点を含めました。
スティーブンD

-P標準です(これPはPOSIX用です)。ただし-h、GNU拡張機能です(他のシステムにも存在しますが、たとえばOpenBSDでは互換性がありません-P)。
ジル 'SO-悪である停止

あなたは--output =無駄スイッチを用いてせずにこれを行うことができます: df -h --output=avail . | tail -1
フロイド

「コマンドを最適化できます」。あんまり。両方のパイプを10'000回実行すると(のように time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done })速度に有意な差はありませんが、驚くほどではありません-呼び出しtailは高価ではなくawk、入力の最後までスキップしても問題ありません... PDP-11 ...
デヴィッドTonhofer

10

どうですかdf -h .。これにより、現在の作業ディレクトリが存在するパーティションの空き容量が得られます。

小さな例:

 /usr/local/nagios/libexec # df -h .
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg00-lvol1
                       9.9G  6.1G  3.4G  65% /

4

バイト単位:

df --output=avail -B 1 "$PWD" | tail -n 1

人間が読める形式:

df --output=avail -h "$PWD" | tail -n 1

または

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"

または

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.