2014-11-03 96 views
0

我試圖讓行的總數中的所有文件在當前工作目錄如何在「wc -l」命令中截斷目錄行?

,爲了做到這一點,我想這下面的命令

wc -l * | tail -1 

但該命令也返回我的目錄..

我的輸出是一樣

wc: Folder1: Is a directory 
wc: Folder2: Is a directory 
wc: Folder3: Is a directory 
1714 total 

我想(在這種情況下,1714)僅將返回的數量輸出。 然後我將它分配給變量以便稍後使用它。

如何截斷目錄行?

後來我可能想用相對路徑使用此命令... 我不知道如何使用相對目錄參數調用wc -l命令嗎?

謝謝..

回答

1

您可以使用:

wc -l * 2>/dev/null 

更好的控制將使用find只得到文件:

要不然:

find . -maxdepth 1 -type f -print0 | xargs -0 -I % cat % | wc -l 

否則:

wc -l --files0-from=<(find . -maxdepth 1 -type f -print0) | awk 'END{print $1}' 
+0

這對我來說很好,謝謝..我該如何添加相對路徑呢? – Webster 2014-11-03 21:57:47

+1

它們已經是相對路徑。 'wc -l ./*'會以部分限定的路徑顯示它們,'wc -l'$ PWD「/ *'會以絕對路徑顯示它們。 – 2014-11-03 22:01:36

+1

@Webster:我爲此提供了一個更好的'find'命令。在'find'命令中,您可以放置​​任何路徑而不是'.'來從該目錄中獲取計數。 – anubhava 2014-11-03 22:12:18

1
find -mindepth 1 -maxdepth 1 -type f -exec cat {} ";" | wc -l 
+1

'+'而不是';'會使效率更高。我不確定'-mindepth'是否有用。 – 2014-11-03 22:14:46

+0

不知道'+',這使得'xargs'對我不太有用。這是一個新版本:'find -maxdepth 1 -type f -exec wc -l {}「+」| awk'END {print $ 1}'' – 2014-11-03 23:16:28