我不知道为什么这个命令也将目录计为文件:
nb_fichier_src=($(find "$file" -type f | wc -l))
在$file
我有51个文件和1个文件夹,但我的指令输出是52!
我想只计算我文件夹中的文件数。什么是错误的想法?
答案 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
注意:
答案 3 :(得分:0)
为了避免递归搜索,请使用maxdepth选项:
nb_fichier_src=($(find "$file" -maxdepth 1 -type f | wc -l))