首页 > 解决方案 > 使用 Shell 脚本获取文件大小的问题

问题描述

我有一个简单的 shell 脚本,可以读取我上传的文件日志,我想输出文件大小和行数(CSV 标头少一个)。我循环正确,但是当我尝试使用 find、wc 或 stat 来获取文件的大小时,它会出现“没有这样的文件或目录”的错误。当我在终端中尝试相同的命令时,它会按预期报告大小。

fileSizeBytes=$(sudo wc -c "$fileName" | awk {'print $1'})
fileSizeKb=$((fileSizeBytes/1024))
lineCount=$(sudo wc -l "$fileName" | awk {'print $1'})
lineCount=$(($lineCount-1))

fileName 变量包含文件的完整路径,并且我检查了所有用户是否具有读/写访问权限。无论我是使用我的帐户还是以 root 身份运行脚本,结果都是一样的。

wc: /plan/files/Today.csv: No such file or directory
wc: /plan/files/Today.csv: No such file or directory
wc: /plan/files/ERMS_STOCK_05052020.csv: No such file or directory
wc: /plan/files/ERMS_STOCK_05052020.csv: No such file or directory
wc: /plan/files/ERMS_RES_05052020.csv: No such file or directory
wc: /plan/files/ERMS_RES_05052020.csv: No such file or directory

有什么想法可能导致这种情况吗?我可以在我的 Mac 上使用类似的脚本(必须更改一些命令),但在我的 RHEL 7.7 VM 上我遇到了这个错误。

干杯

标签: shellwc

解决方案


感谢您的意见。我终于明白了可能发生的事情,那令人抓狂的尾随空白。我解析日志文件的方式是,路径末尾有一个空格。一点点 sed 魔法将其剥离,一切正常!


推荐阅读