2012-10-04 56 views
0

如何編寫一個單行命令行調用來計算目錄/ usr/bin,/ bin和/ usr/doc中的文件總數?如何獲得3個目錄中的文件總數?

到目前爲止,我能想到的是使用

cd /usr/bin&&ls -l | wc -l

,但我不知道如何把它們加在一起,是這樣的:

(cd /usr/bin&&ls -l | wc -l) + (cd /bin&&ls -l | wc -l)

也許有是一個更好的方法來做到這一點,就像獲取每個目錄的所有stdout一樣,然後管道到wc -l

有什麼想法?

回答

1

如何使用find命令+ wc -l?

find /usr/bin /bin /usr/doc -type f |wc -l 
1

在與廁所相結合多個目錄使用ls是一個小更簡潔:

ls /usr/bin /bin /usr/doc | wc -l 
0

肯特指出,發現可能是優選的,因爲它會忽略目錄條目。調整它,如果你想要符號鏈接。

如果您發現支持它,則需要使用-maxdepth,除非您想要將其緩存到其中任何意外的目錄中。如果目錄由於某種奇怪的原因而不存在,也扔掉stderr。

find /usr/bin /bin /usr/doc -maxdepth 1 -type f 2>/dev/null | wc -l
1

假設bash或類似能力的外殼,可以用數組:

files=(/usr/bin/* /bin/* /usr/doc*) 
num=${#files[@]} 

此方法將正確地處理包含換行符的文件名。

+0

你的答案似乎很有希望,但我仍然無法將字符串轉換爲number'number = 1; echo $ {#number} + 1'我想輸出是2 – mko

+0

如果你想算術,你必須使用bash的算術語法:'num = 3; echo $((num + 1))' - 或'num = 3; ((NUM ++)); echo $ num' –

+0

'num = 3; echo $((num + 1))' title:5:解析錯誤 – mko

相關問題