通过使用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语句检查文件大小?
使用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("不等于”)。这些运算符进行整数比较。