6

我想剪切包含文件大小的列。我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

我想得到这个:

2188
1640
68
0
0
0
0
0
0
122
0
0
0
4

3 回答 3

16

大多数cuts 计算文字字符,因此-f 6要正常工作,您的数据必须完全位于相同的列中。不确定您的倒数第三行是错字还是输出的精确复制,但它完美地说明了 cut 的问题。

对于这种情况,大多数人会使用一个awk解决方案:

 ls -l | awk '{print $6}'

将产生您列出的输出

awk 的美妙之处在于,字段 6 由 awk FS 变量(字段分隔符)的值确定,默认为“多个空白值”(空格或制表符)(这不是准确的描述,但对于您的需要)。

于 2013-05-04T13:27:28.217 回答
6

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

于 2013-05-04T13:30:06.513 回答
0

使用 sed:

ls -l | sed -E 's/ +/ /g'

“+”表示任意多个空格

于 2019-08-22T15:45:23.083 回答