2016-12-26 35 views
0

我是shell腳本編程新手。我試圖循環訪問find中的文件路徑列表,並計算列表中每個文件的行數。某些文件路徑包含空格,因此它們在for循環中被解釋爲單獨的元素,而不是單個元素。轉義文件路徑列表的空格

當我運行以下:

for filepath in `find . -name '*.m'`; do echo $filepath; done; 

我看到一些用空格的路徑的跨多個行的印刷,而不是被印刷在同一行上。

如何避免每個文件路徑的空間?

+0

請參閱[BashFAQ#20:如何查找並安全處理包含換行符,空格或兩者的文件名?](http://mywiki.wooledge.org/BashFAQ/020)。 –

回答

1

我想循環查找文件路徑列表並計算列表中每個文件的行數。

以下是這樣做的正確方法:

find . -type f -name '*.md' -exec wc -l {} \; 

for .. in環路接受的IFS - 分隔單詞的列表。 IFS默認包含空格,所以文件名中的空格實際上將文件名拆分爲單獨的單詞。

+0

如果'find'的結果是目錄,那麼使用'wc'的方法是什麼? – Buck