我需要创建一个shell命令,列出目录中的所有文件名及其大小。我写了这个:
ls -l | awk ' {print $9, $5} '
问题是,只需9美元,它就会打印出文件名的第一个单词。 有什么提示让它打印全名?
答案 0 :(得分:3)
而不是parsing ls
,请使用find
:
find . -type f -printf "%s\t%f\n"
%f
指令打印文件名,删除了前导目录。 %s
生成以字节为单位的文件大小。
要将列表限制在当前目录中,请使用-maxdepth
:
find . -maxdepth 1 -type f -printf "%s\t%f\n"
您也可以使用stat
:
stat --printf "%s\t%n\n" *