2009-11-11 79 views
0
獨立

所以我想linux的bash命令通過空間

-l使我這個

drwxr-xr-x 11 stuff stuff  4096 2009-08-22 06:45 lyx-1.6.4 
-rw-r--r-- 1 stuff stuff 14403778 2009-10-26 02:37 lyx.tar.gz 

第一LS我使用這個在一次只顯示列:

ls -l |cut -d " " -f 1 

得到這個

drwxr-xr-x 
-rw-r--r-- 

,它DISPLA是我的第一列就好了。然後,我希望看到第二列

ls -l |cut -d " " -f 2 

我只得到這個

11 

我不應該得到

11 
1 


它爲什麼這樣做?

,如果我嘗試

ls -l |cut -d " " -f 2-3 

我得到

11 stuff 

有一定有要顯示的列權的更簡單的方法?

回答

6

這應顯示的第二列:

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

+0

這將適用於所有情況下,除了文件名本身,當文件名已嵌入空白時。爲此,您可能需要使用「awk」{print substr($ 0,45)}'「或」ls -l | cut -c45-「。 – 2009-11-12 04:17:07

1

切考慮兩個相繼的分隔符之間都存在一個空的字段。因此,第二行:

-rw-r--r-- 1 stuff stuff 

具有字段:

1: -rw-r--r-- 
2: --empty field-- 
3: 1 
etc. 

可以在切割使用使用列字段:

ls -l | cut -c13-14 

或者你可以用awk不同的領域(取消鏈接,切awk會將順序分隔符視爲單個分隔符)。