2013-05-04 63 views
0

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

請編輯您的問題,包括預期的輸出。你也真的想要一個空的-d(分隔符)'''',試試''''?祝你好運。 – shellter 2013-05-04 13:09:37

+1

ls輸出總是有風險要解析。似乎你對尺寸感興趣,爲什麼不檢查'du'命令。它可能會給你更好的想法 – abasu 2013-05-04 13:33:54

回答

5

cut count:伯爵文本字符,所以-f 6工作,你的數據必須是完全在同一列。不知道您的第三行到最後一行是否是拼寫錯誤或您的輸出的確切複製品,但它說明了完美剪切的問題。

對於這種情況,大多數人會使用awk解決方案:

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

會產生你列出

AWK的美麗的輸出是場6由AWK FS值確定變量(字段分隔符),默認爲「多個空白值」(空格或製表符)(這不是一個確切的描述,但足夠滿足您的需求)。

+0

剪切仍然會工作得很好。如果你輸入列命令,你可以使輸出看起來很好,很整潔。 「ls -l | column -t」這對於df和mount命令非常方便。 – 2013-05-05 02:02:29

+0

聽起來不錯,謝謝分享! (但是...)'-ksh:列:找不到[沒有這樣的文件或目錄]'。祝你們好運。 – shellter 2013-05-05 16:36:08

3

你不需要解析lsstat -c %s *會給你一列大小。如果你想要的文件名太:stat -c "%s %n" *