Bash 脚本未返回正确的文件大小
Bash Script Not Returning Correct File Size
我有一小段 bash 脚本,我想执行以下操作:
- 获取/test/f1目录中文件名为"test_*.txt"
的文件列表
- 计算所有这些文件的总大小
- 将尺寸打印到屏幕
我现在的脚本是这样的:
folder="/test/f1/"
files=$(find $folder -type f -name "test_*.txt")
size=$(du -ch $files | tail -1 | cut -f 1)
echo $size
这在查找文件时效果很好。但是,当目录没有任何 test_*.txt 文件时,我希望它打印 0 MB 或 0 KB。目前,它打印几百 kb。
当 /test/f1/ 目录没有任何这些 test_*.txt 文件时,我可以验证文件(在第 2 行中计算)为空。但是,第 3 行似乎仍将大小设置为几百 kb。
为什么会这样?为什么在这种情况下不显示 0?
谢谢
您可以在没有任何文件的情况下调用 du
,在这种情况下它将对当前目录进行操作(递归)。因此,如果您调用 du -ch $files
并且 $files
为空,您将得到 du -ch .
的输出
请注意,du
默认情况下对目录递归操作。
我有一小段 bash 脚本,我想执行以下操作:
- 获取/test/f1目录中文件名为"test_*.txt" 的文件列表
- 计算所有这些文件的总大小
- 将尺寸打印到屏幕
我现在的脚本是这样的:
folder="/test/f1/"
files=$(find $folder -type f -name "test_*.txt")
size=$(du -ch $files | tail -1 | cut -f 1)
echo $size
这在查找文件时效果很好。但是,当目录没有任何 test_*.txt 文件时,我希望它打印 0 MB 或 0 KB。目前,它打印几百 kb。
当 /test/f1/ 目录没有任何这些 test_*.txt 文件时,我可以验证文件(在第 2 行中计算)为空。但是,第 3 行似乎仍将大小设置为几百 kb。
为什么会这样?为什么在这种情况下不显示 0?
谢谢
您可以在没有任何文件的情况下调用 du
,在这种情况下它将对当前目录进行操作(递归)。因此,如果您调用 du -ch $files
并且 $files
为空,您将得到 du -ch .
请注意,du
默认情况下对目录递归操作。