ディレクトリに音楽がある程度埋め込まれるようなスクリプトを作成したいのですが、ある程度のスペースが残っています。ディレクトリはさまざまなパーティション上にある可能性があり、ディレクトリに空きスペースやそのパーティションを尋ねる方法はわかりません。ディレクトリやパーティションのディレクトリの容量を調べるには
どのようにあなたがそれ答えて
私は、あなたが記入したい特定のパーティション上で、特定のディレクトリを持っている意味と仮定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
mg。私は "du"、 "fdisk"、 "stat"などを調べましたが、 "df"が引数を取るかどうかは見ていませんでした。ありがとうございました。 – ulver
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
ありがとうございます。あなたの答えは素晴らしいです。私はたぶんこの部分のdf部分を使い、残りの部分はルビーに切り替えるつもりですが、これは素晴らしいことです。ありがとうございました。 – ulver
/path/2/music/classic/brucknerのような特定のフルパスは、1つのパーティションにしか存在できません。特定のディレクトリに置かれたファイルはすべて同じパーティションにあります。しかし、その下にサブディレクトリがある場合、それらは他のディスクにマウントされるかもしれませんが、特定のディレクトリが保持できるものには影響しません。これにより、「現在のディレクトリで使用可能なディスク容量は何ですか?」という問題が簡素化されます。 (複数のプロセスが同じパーティション領域にファイルを書き込んでいる場合を除きます)。がんばろう。 – shellter