切割柱包括尺寸

use*_*333 2 linux bash ls cut

我想剪切包含文件大小的列.我ls -l用来查看当前本地化中的文件信息.我在txt文件中保存有关文件的信息ls -l > info.txt,现在我想剪切包括大小的列.我这样做,cat info.txt | cut -d'' -f6但我不工作.我做错了什么?

这包括info.txt:

-rwx------ 1 s10891 Domain Users   2188 May  4 14:51 info.txt
-rwx------ 1 s10891 Domain Users   1640 Mar 10 07:43 code.txt
-rwx------ 1 s10891 Domain Users     68 Mar  4 11:59 sorted.txt
drwx------ 1 s10891 Domain Users      0 Jan 11 09:48 PPJ
drwx------ 1 s10891 Domain Users      0 Sep  7  2012 public_html
drwx------ 1 s10891 Domain Users      0 Apr 15 11:16 RBD
drwx------ 1 s10891 Domain Users      0 Jan  7 09:45 RDB
drwx------ 1 s10891 Domain Users      0 Apr 15 12:00 SOP
drwx------ 1 s10891 Domain Users      0 Apr  8 12:53 sop_ex3
-rwx------ 1 s10891 Domain Users    122 Feb 25 11:48 sop_info.txt
drwx------ 1 s10891 Domain Users  0 Jan 14 09:41 WindowsFormsApplicati
drwx------ 1 s10891 Domain Users      0 Jan 14 09:41 WindowsFormsApplicati
drwx------ 1 s10891 Domain Users      0 Jan 14 09:41 WindowsFormsApplicati
Run Code Online (Sandbox Code Playgroud)

我想得到这个:

2188
1640
68
0
0
0
0
0
0
122
0
0
0
Run Code Online (Sandbox Code Playgroud)

she*_*ter 9

大多数cut是计算文字字符,因此-f 6要使用,您的数据必须完全在同一列中.不确定你的第3行到最后一行是输错管还是输出的精确再现,但它完美地说明了切割的问题.

在这种情况下,大多数人会使用awk解决方案:

 ls -l | awk '{print $6}'
Run Code Online (Sandbox Code Playgroud)

将产生您列出的输出

awk的美妙之处在于字段6由awk FS变量(字段分隔符)的值决定,默认为"多个空格值"(空格或制表符)(这不是一个确切的描述,但足够接近你的需要).

  • Cut 仍然可以正常工作。如果您通过管道传输column命令,您可以使这样的输出看起来漂亮整洁。“ls -l | column -t” 对于 df 和 mount 命令来说非常方便。 (3认同)

gle*_*man 5

你不需要解析lsstat -c %s *会给你一列大小。如果你也想要文件名:stat -c "%s %n" *