如何在Linux/Unix bash shell脚本中检查文件大小

时间:2020-01-09 10:40:01  来源:igfitidea点击:

如何在bash shell脚本中找出文件的大小并将此文件大小存储在bash shell变量中?
您无法使用内部或内置命令在bash脚本中获取文件的大小。
最好在Linux下使用stat和其他命令来检查文件大小。

stat命令显示有关文件的信息,包括文件的大小。
另一种选择是使用wc命令,该命令可以计算每个给定文件中的字节数。
让我们看看如何使用这两个命令来检查Linux或类Unix系统中文件的大小。

如何使用wc命令检查Unix中的文件大小

wc命令显示文件中包含的行数,字数和字节数。
获取文件大小的语法如下:

wc -c /path/to/file
wc -c /etc/passwd

输出示例:

5253 /etc/passwd

您可以使用cut或awk命令轻松提取第一个字段:

wc -c /etc/passwd | awk '{print }'

输出示例:

5253

或将此大小分配给bash变量:

myfilesize=$(wc -c "/etc/passwd" | awk '{print }')
printf "%d\n" $myfilesize
echo "$myfilesize"

使用stat命令获取bash脚本中文件的大小

stat命令显示有关文件的信息。
语法如下,以获取GNU/Linux统计信息中的文件大小:

stat -c %s "/etc/passwd"

或者

stat --format=%s "/etc/passwd"

将此大小分配给bash变量:

myfilesize=$(stat --format=%s "/etc/passwd")
echo "$myfilesize"
## 或者
myFileSizeCheck=$(stat -c %s "/etc/resolv.conf")
printf "My file size = %d\n" $myFileSizeCheck

语法如下,以获取BSD/MacOS统计信息中的文件大小:

stat -f %z "/etc/passwd"

请注意,如果文件是符号链接,则只能使用stat命令获得该链接的大小。

使用du命令检查文件大小

如何使用bash/ksh/zsh/sh/tcsh shell检查文件的大小?

语法是

du --apparent-size --block-size=1  "/etc/passwd"
fileName="/etc/hosts"
mfs=$(du --apparent-size --block-size=1  "$fileName" | awk '{ print }')
echo "$fileName size = ${mfs}"

使用find命令获取文件大小

find命令的语法如下:

find "/etc/passwd" -printf "%s"
find "/etc/passwd" -printf "%s\n"
fileName="/etc/hosts"
mysize=$(find "$fileName" -printf "%s")
printf "File %s size = %d\n" $fileName $mysize
echo "${fileName} size is ${mysize} bytes."