
ファイルのサイズを数値でチェックするため (stat -c%s $filename で抽出)、文字列を整数に変更する必要があります。完全なスクリプトは次のとおりです。
#!/bin/bash
# Variable that contain path destination file
path=/sobstitude
# Variable for size
size=1000
# Loop for file scan
for filename in /test/*;
do
# Take the size of file
filesize=$(stat -c%s $filename)
# Check if the file is empty
if [ $filesize > $size ]
then
# Replace file
mv $filename $path
fi
done
exit 0;
答え1
bash
/変数にsh
文字列が含まれている場合、厳密な整数の概念はありません。文字列は整数のように見えても十分です。
stat -c%s $filename
整数のような文字列を返す必要があります。
あなたの場合、主な問題はリダイレクト演算子にあります>
(おそらく、作業ディレクトリ内に数字の名前を持つファイルがあるでしょう)。このスニペット:
[ $ファイルサイズ > $サイズ ]
すべきである
[ "$filesize" -gt "$size" ]
答え2
データ型を「変換」する必要はありません。数値を比較するには-gt
、 または を使用できます。-lt
➜ size="$(stat -c%s test.mp4)"; [[ "$size" -gt 4000 ]] && echo "bigger" || echo "smaller"
bigger
➜ size="$(stat -c%s test.mp4)"; [[ "$size" -gt 400000 ]] && echo "bigger" || echo "smaller"
smaller
は>
原則的には間違っていません。算術式比較を実行します。
私は[[
その[
拡張機能。
すべての変数展開は二重引用符で囲む必要があることに注意してください。特に および の場合$filename
、$path
そのいずれかに空白が含まれていると、スクリプトは失敗します。
答え3
これを変更したら解決しました:
if ((filesize > size))
今は仕事中です。サポートありがとうございます