使用du -s结合cut/awk无法仅提取指定文件大小的问题求助
解决
du输出切割失败的问题 哈哈,太懂这种明明逻辑没问题但就是出不来结果的憋屈感了!你的问题根源在于du命令的输出里,大小和文件名之间不是单个空格,而是一堆连续的空格(甚至可能混着制表符),这就导致你用cut -d ' '指定单个空格当分隔符时,根本切不到正确的位置。
给你几个靠谱的解决办法:
最省心的方法:用awk直接取第一个字段
awk默认会把任意数量的空白字符(空格、制表符都算)当成分隔符,所以直接这样写就行:du -s c_parser.py | awk '{print $1}'这绝对能精准拿到前面的大小数值,不用纠结分隔符的问题。
用tr压缩空格后再cut
如果非要用cut,可以先通过tr -s ' '把多个连续空格压缩成单个,再切割:du -s c_parser.py | tr -s ' ' | cut -d ' ' -f1换个思路:直接用stat获取大小
如果你要的是文件的实际字节大小(而非磁盘占用块数),用stat命令更直接:stat -c %s c_parser.py要是还是需要磁盘占用的数值,那前面两种方法更合适。
另外提一句,你之前写的awk命令awk -F="c_parser.py"有语法问题,正确的写法应该是-F"c_parser.py"(去掉等号),但就算语法对了,用文件名当分隔符也不是个好主意——万一文件名里有特殊字符,整个命令就失效了,还是用默认的空白分隔最稳妥。
内容的提问来源于stack exchange,提问作者Clannadqs
相关产品推荐
相关产品推荐

