我想剪切包含文件大小的列。我使用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
答案 0 :(得分:8)
大多数cut
个计数字面字符,因此要使-f 6
生效,您的数据必须完全在同一列中。不确定你的第3行到最后一行是输错管还是输出的精确复制品,但它说明了完美切割的问题。
对于这种情况,大多数人会使用awk
解决方案:
ls -l | awk '{print $6}'
将产生您列出的输出
awk的美妙之处在于字段6由awk FS变量(字段分隔符)的值决定,默认为“多个空格值”(空格或制表符)(这不是一个确切的描述,但是很接近足以满足您的需求。)
答案 1 :(得分:3)
您无需解析ls
:stat -c %s *
会为您提供一列尺寸。如果您还想要文件名:stat -c "%s %n" *
答案 2 :(得分:0)
使用sed:
ls -l | sed -E 's/ +/ /g'
“ +”表示任意多个空格