防止空间使用反引号拆分文件名

时间:2015-06-01 17:50:45

标签: linux command-line

使用find选择要使用反引号/反引号传递给另一个命令的文件,我注意到包含空格的文件名将被拆分,因此找不到。

有可能避免这种行为吗?我发出的命令看起来像这样

wc `find . -name '*.txt'`

但是例如当目录a b c.txt中有一个名为x的文件时,它会报告

$ wc `find . -name '*.txt'`
wc: ./x/a: No such file or directory
wc: b: No such file or directory
wc: c.txt: No such file or directory

当与多个文件一起使用时,wc将显示每个文件的输出,并显示包含所有文件总数的最终摘要行。这就是我想要执行一次wc的原因。

我尝试用sed转义空格,但是wc产生相同的输出(用空格拆分文件名)。

wc `find . -name '*.txt' | sed 's/ /\\\ /pg'`

2 个答案:

答案 0 :(得分:1)

使用-print0的{​​{1}}选项和find的相应-0选项:

xargs

您还可以使用find . -name '*.txt' -print0 | xargs -0 wc 选项-exec

find

答案 1 :(得分:0)

来自very similar question(我应该将我的问题标记为重复吗?)我使用bash' **扩展找到了另一个答案:

wc **/*.txt

为了这个工作我必须

shopt -s globstar