使用 IF 条件检查文件大小是否大于 1MB

Rav*_*avi 4 linux size

通过使用ls -lh我们可以获得文件大小。

有什么方法可以检查文件大小是否大于 1MB,然后打印如下消息?我可能有不同大小的文件,如 100mb、1gb、10gb、100kb。

if [ $FileSize > 1MB ];
then
    echo "File size is grater than 1MB"
fi
Run Code Online (Sandbox Code Playgroud)

有没有办法可以使用if语句检查文件大小?

Kus*_*nda 9

使用find上的特定文件$filepath

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

这用于find查询特定文件$filepath的大小。如果大小大于 1000000 字节,find将打印文件的路径名,否则将不生成任何内容。所述-n如果字符串具有非零长度,测试结果为真,在这种情况下,意味着find输出的东西,这进而意味着该文件是大于1 MB。

你没有问这个问题:在 some 下查找所有大于 1 MB 的常规文件$dirpath并为每个文件打印一条短消息:

find "$dirpath" -type f -size +1000000c \
    -exec printf '%s is larger than 1 MB\n' {} +
Run Code Online (Sandbox Code Playgroud)

这些代码应该可以移植到任何 Unix。


另请注意,在测试中使用<>将测试两个涉及的字符串是否按字典顺序以特定方式排序。这些运算符不进行数字比较。为此,请使用-lt("小于")、-le("小于或等于")、-gt("大于") 或-ge("大于或等于")、-eq("等于") 或-ne("不等于”)。这些运算符进行整数比较。