7.4M などの値を取り込めるパラメーターに基づいてファイルを検索しようとしていますが、使用できないようです。
FileSize=7.4M
find . -size $FileSize
これを行うと、「不正な末尾文字」になります
7.4M などの値を取り込めるパラメーターに基づいてファイルを検索しようとしていますが、使用できないようです。
FileSize=7.4M
find . -size $FileSize
これを行うと、「不正な末尾文字」になります
おそらく、ビット演算を使用できます
FileSize=7
find . -size $(( FileSize << 20 ))
入力を整数に正規化するこの関数を作成しました。
normalize() { echo "$1" | awk -FM '/M/ { printf "%dk", $1*1024 }; !/M/ { print $1 }'; }
この関数を定義した後、次のように使用します。
$ echo $(normalize 7.4M)
7577k
$ echo $(normalize 15k)
15k
したがって、次のようにコードを記述できます。
find . -size $(normalize $FileSize)
しかし、とにかくそれに対してお勧めします。このようなシンタックスシュガーをbashで実行するのは難しいことであり、小さなバグのレシピです。たとえば、normalize()のユーザーは、「15.5k」が機能することを期待しているかもしれませんが、そうではありません。また、ユーザーは7.4Mがこの関数によって丸められなかったことを期待できましたが、丸められました(7.4mb = 7759462.4バイトであるため、ファイルを正確に7.4mbにする方法はありません)。
chepnerが提案したように、findの構文に従うことをお勧めします。
また、ほとんどの場合、おそらく次のようなものを使用する必要があります
find . -size +7M -and -size -8M
一定の間隔(この例では、7MBから8MBの間)でファイルを検索します。最初に+または-がないと、この正確なサイズのファイルのみが検索されます。しかし、私が言ったように、正確に7.4mbのファイルはありません。このサイズは、概算値を報告したプログラムから取得した可能性があります。