2011-03-01 20 views
93

我想獲得目錄中所有文件的列表,例如ls,這樣每個文件名將位於單獨的行中,而不需要ls -l提供的額外詳細信息。我看着ls --help並沒有找到解決方案。我試過如何獲取不同行中的文件名列表

ls -l | cut --fields=9 -d" " 

但是ls沒有在列之間使用固定數量的空格。任何想法如何做到這一點,最好在一行?

回答

213

ls -1

這是一個數字,而不是小L

+4

我在文檔中看到: cross -x,commas -m,horizo​​ntal -x,long -l,single-column -1,verbose -l,vertical -C 我不確定他們是怎麼出現的與其中一些。 – 2015-10-21 22:50:54

5

也許:

ls | awk '{print $NF}' 
+0

注:帶有空格,如文件名「蘋果和pears.jpg「將變成」pears.jpg「 – oknate 2017-03-23 12:37:39

4

ls | cat ... 或可能,ls -1

+3

請避免無用的貓咪:) – jhwist 2011-03-01 14:25:09

+3

'cat'在這種情況下不是無用的。它按照OP要求的格式將「ls」的輸出格式化爲一列。 – 2015-10-29 04:44:35

11

沒有管-ING :-)

ls --format single-column 

注意解決方案,從長遠選項僅支持GNU coreutils其中BSD ls只支持短參數-1

19

ls -1。從幫助:

-1列表每行

作品在Cygwin上和FreeBSD的一個文件,因此它可能不是太GNU特異性。

+0

'man 1p ls'是posix文檔 – 2011-03-01 14:26:57

+0

也適用於Ubuntu。謝謝 – 2016-05-26 09:34:15

3

用sed命令列出單列

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/' 
+0

'ls -l'產生的結果與你的整個答案相同。不知道'sed'在這裏加了什麼...... – 2015-10-29 04:48:24

1

首先,你可以用這個。它會顯示每行一個文件。

ls -l | SED的/(.*)(。*)$/\ 2 /'

否則,你可以使用這樣

發現。 -maxdepth 1 | sed's /.///'

這兩件事情都是一樣的。

+0

我在\'s'命令的RHS上得到錯誤'sed:-e表達式#1,字符16:無效參考\ 2 – 2015-10-29 04:46:00

3

試試這個:

$ ls | xargs -n num 

這裏num是要在列出的列數

0

這也將做

ls -l | awk '{print $NF}' 
+0

這與Eelvex's [應答](http://stackoverflow.com/a/5155730/369450)? – cpburnz 2017-01-17 16:14:11

相關問題