Linuxls
命令带有这些选项。
--block-size=SIZE
scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see
SIZE format below
-l use a long listing format
list subdirectories recursively
-s, --size
print the allocated size of each file, in blocks
我认为这ls -l
是实际文件大小,也是ls -s --block-size=1
分配用于存储文件的磁盘空间量。 (在本例中,991232 = 968x1024 = 968K。)
$ ls -s --block-size=1 summary.pdf
991232 summary.pdf
$ ls -l summary.pdf
-rwxrwx---. 1 chris chris 989838 May 1 2015 summary.pdf
是否可以在没有“长列表格式”中的附加信息的情况下获取文件大小(以字节为单位)?
答案1
您可以使用stat
自定义格式。
stat -c'%s' summary.pdf
将输出实际文件大小(以字节为单位)。如果您想要分配的块,请使用%b
分配的块数和%B
每个块的块大小(以字节为单位)。
这也适用于通配符和附加的%n
文件名。有关更多格式选项,请参阅手册页。
答案2
如果您想要一种ls
仅显示大小和文件名的替代格式,那么这个技巧就可以了。
ls -l | sed "s/ */ /g" | cut -d ' ' -f 5,9-
或者可能:
alias size_plus_name="sed 's/ */ /g' | cut -d ' ' -f 5,9-"
ls -l | size_plus_name
ls
以这种方式与任何开关或命令行参数一起使用。不要忘记包含-l
.
注意力!仅当文件名不包含任何空格时才有效。
但是,5-9-
(而不是5-9
) 尝试处理包含 wsp 的文件名。
(参见下面@Scott 的评论)
答案3
du
将 * 替换为文件名:
du -s -B 1 *
du -s -B 1 * | cut -f 1
stat
除了目录之外,它与其他相同:du
将报告递归大小(例如:99999),stat
将报告 4096 或块大小
find
也有效:与stat
find * -maxdepth 1 -printf "%s\n"
%p File's name.
%s File's size in bytes.
%f Print the basename; the file's name with any leading directories removed