在脚本上使用“wc -l”比在终端上使用更多

时间:2015-07-14 20:01:33

标签: bash shell wc

我正在制作一个bash脚本,就像这样:

#!/bin/bash
DNUM=$(ls -lAR / 2> /dev/null | grep '^d' | wc -l)
echo there are $DNUM directories.

问题是,当我直接在终端上运行此行时:

ls -lAR / 2> /dev/null | grep '^d' | wc -l

我得到一个号码。

但是当我运行脚本时,它会向我显示更多数字,例如30到50个。

这里有什么问题?
为什么“wc”命令在从脚本运行时会计算更多行?

2 个答案:

答案 0 :(得分:1)

两次运行可能有不同的目录根。而不是ls只能找到目录,您可以使用此

find parent_directory -type d

并管道到wc -l来计算。

/proc目录将具有进程并被视为目录,并将从运行更改为运行。要将其从计数中排除,请使用

find / -path /proc -prune -o -type d | wc -l

答案 1 :(得分:0)

为了找到您确切情况的差异,我建议您运行

sys
但是作为最多的人。已经说过排除像proc,{{1}} ......

这样的目录是有意义的