2016-12-26 33 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