计算目录中的文件数

时间:2014-08-14 13:25:18

标签: bash unix

我不知道为什么这个命令也将目录计为文件:

nb_fichier_src=($(find "$file" -type f | wc -l))

$file我有51个文件和1个文件夹,但我的指令输出是52! 我想只计算我文件夹中的文件数。什么是错误的想法?

4 个答案:

答案 0 :(得分:2)

要使用空格和文件名中的新行来处理文件,最好使用find这样的命令:

nb_fichier_src=$(find . -maxdepth 1 -type f -exec echo . \; | wc -l)

记下-exec echo .,为当前目录中的每个文件打印一个点。

答案 1 :(得分:1)

您可以通过目录的glob循环test

num_files=0
for file in directory/*; do
    [ -f "$file" ] && ((num_files++))
done

答案 2 :(得分:0)

您应该使用:

ls -l | grep -v ^d | wc -l

注意:

  • grep:检查以" d"开头的任何行。 (表示目录),并丢弃该行(-v)
  • wc: - 计算ls -l <​​/ li>输出中的行数(-l)

答案 3 :(得分:0)

为了避免递归搜索,请使用maxdepth选项:

nb_fichier_src=($(find "$file" -maxdepth 1 -type f | wc -l))