2011-10-26 9 views
0

ディレクトリに音楽がある程度埋め込まれるようなスクリプトを作成したいのですが、ある程度のスペースが残っています。ディレクトリはさまざまなパーティション上にある可能性があり、ディレクトリに空きスペースやそのパーティションを尋ねる方法はわかりません。ディレクトリやパーティションのディレクトリの容量を調べるには

どのようにあなたがそれ

+1

/path/2/music/classic/brucknerのような特定のフルパスは、1つのパーティションにしか存在できません。特定のディレクトリに置かれたファイルはすべて同じパーティションにあります。しかし、その下にサブディレクトリがある場合、それらは他のディスクにマウントされるかもしれませんが、特定のディレクトリが保持できるものには影響しません。これにより、「現在のディレクトリで使用可能なディスク容量は何ですか?」という問題が簡素化されます。 (複数のプロセスが同じパーティション領域にファイルを書き込んでいる場合を除きます)。がんばろう。 – shellter

答えて

3

私は、あなたが記入したい特定のパーティション上で、特定のディレクトリを持っている意味と仮定100 MBが残るまで。

dfコマンドは、特定のディレクトリのディスク/パーティションに残っているディスク容量を返します。

df musicfolder/ 

4番目の列では、4番目の列の値を獲得し、ヘッダを無視することはawkを使用することができ、自由空間に

Filesystem   1K-blocks  Used Available Use% Mounted on 
/dev/sda1   151733412 24153792 119871924 17%/

を与えるだろう。したがって、あなたのスクリプトは次のようなものになります:

freespace=$(df /musicfolder | awk 'FNR>1{print $4}') 

while [ $freespace -gt 10000000 ] ; do 
    (copy files from wherever) 
    freespace=$(df ~/musicfolder | awk 'FNR>1{print $4}') 
done 
+0

mg。私は "du"、 "fdisk"、 "stat"などを調べましたが、 "df"が引数を取るかどうかは見ていませんでした。ありがとうございました。 – ulver

3
など、見つけることは、bashのようなUNIXツールを使用してLinuxの dfは、まさにそれをあなたに教えてくれるんでしょう
pseudocode 
fill(directory) 
    until < 100 mb of free space in directory 
    copy music to directory 

。フォルダが中に存在するボリューム上の空き領域を確認するには、実行します。

df -h /home/chris/directory 

出力:

Filesystem   Size Used Avail Use% Mounted on 
server:/vol/home  2.0T 1.3T 759G 63% /home/chris 

省略代わりに、人間が読めるK/M/Gの生のバイトを取得する-hフラグ/ T。

EDIT私は退屈だという理由だけで、私は先に行って、あなたのためのスクリプトを書いた:

#!/bin/bash 
fillDir='/mnt/fillMe' 
musicFile='/home/chris/Yakety Sax.mp3' 

while [ `df -P "$fillDir" | awk 'NR==2{print $4}'` -gt 100000000 ] 
do 
    echo `df -Ph "$fillDir" | awk 'NR==2{print $4}'` space left. 
    cp "$musicFile" "$fillDir" 
done 
+0

ありがとうございます。あなたの答えは素晴らしいです。私はたぶんこの部分のdf部分を使い、残りの部分はルビーに切り替えるつもりですが、これは素晴らしいことです。ありがとうございました。 – ulver

関連する問題