IF条件を使用してファイルサイズが1MBを超えることを確認する

IF条件を使用してファイルサイズが1MBを超えることを確認する

を使用すると、ls -lhファイルサイズを取得できます。

ファイルサイズが1MBより大きいことを確認し、以下のようなメッセージを出力する方法はありますか? 100mb、1gb、10gb、100kbなど、さまざまなサイズのファイルがある可能性があります。

if [ $FileSize > 1MB ];
then
    echo "File size is grater than 1MB"
fi

ifステートメントを使用してファイルサイズを確認する方法はありますか?

ベストアンサー1

find以下の特定のファイルに使用します$filepath

if [ -n "$(find "$filepath" -prune -size +1000000c)" ]; then
    printf '%s is strictly larger than 1 MB\n' "$filepath"
fi

特定のファイルのサイズをfind照会するために使用されます。$filepathサイズが1000000バイトより大きい場合、findファイルのパス名が印刷され、そうでなければ何も生成されません。-n文字列の長さがゼロでない場合、テストは真です。この場合、find何かが出力されたことを意味し、これはファイルが1MBより大きいことを意味します。

あなたはこれを尋ねていません:いくつかのファイルで1MBを超えるすべての一般的なファイルを見つけて、$dirpath各ファイルに対して短いメッセージを印刷します。

find "$dirpath" -type f -size +1000000c \
    -exec printf '%s is larger than 1 MB\n' {} +

このコードはすべてのUnixに移植可能でなければなりません。


また、テストで<またはを使用すると、>関連する2つの文字列が特定のアルファベット順にソートされているかどうかがテストされます。これらの演算子は数値比較を実行しません。これを行うには、-lt(「より小さい」)、-le(「より小さいか等しい」)、-gt(「より大きい」)、または-ge(「大きいか等しい」)、-eq(「等しい」)、または-ne(「を使用します。等しくない」)。この演算子は整数比較を実行します。

おすすめ記事