我需要显示文件大小和文件名。像这样:
4.0K Desktop
我正在使用ls -l输出中的cut来提取这两个字段:
ls -lhS | cut -d' ' -f5,9
由于ls -l
输出中有多个空格,我得到一些错误的输出,例如:
4.0K 19:54
4.0K 19:55
6
18:39
31
25
我该如何解决这个问题?
我需要仅使用管道完成此任务,并且没有bash脚本(输出可能是多个管道),最好没有sed,awk。
如果没有替代sed或awk的话 - 使用sed就可以了。
答案 0 :(得分:2)
您can avoid parsing ls output
并使用stat
命令作为GNU coreutils
的一部分在bash中获取详细的文件信息。
# -c --format=FORMAT
# use the specified FORMAT instead of the default; output a newline after each use of FORMAT
# %n File name
# %s Total size, in bytes
stat -c '%s %n' *
答案 1 :(得分:1)
在使用剪切之前,您可以使用translate character命令。
ls -lhS | tr -s ' ' | cut -d' ' -f 5,9
答案 2 :(得分:0)
或者你可以提交给awk:
$ ls -lhS | awk '$0=$5 OFS $9'
即。将整个记录$0
替换为以输出字段分隔符$5
分隔的字段$9
和OFS
。