如何使用循环创建bash脚本来计算目录中的文件数。
脚本应该采用目标目录并输出:::
中的文件数答案 0 :(得分:1)
#!/bin/bash
counter=0
if [ ! -d "$1" ]
then
printf "%s\n" " $1 is not a directory"
exit 0
fi
directory="$1"
number="${directory##*/}"
number=${#number}
if [ $number -gt 0 ]
then
directory="$directory/"
fi
for line in ${directory}*
do
if [ -d "$line" ]
then
continue
else
counter=$(( $counter + 1))
fi
done
printf "%s\n" "Number of files in $directory :: $counter"
答案 1 :(得分:1)
我会使用(GNU)find
和wc
:
find /path/to/dir -maxdepth 1 -type f -printf '.' | wc -c
上面的find
命令为目录中的每个文件打印一个点,wc -c
计算这些点。这适用于文件名中任何类型的特殊字符(包括空格和换行符)。
答案 2 :(得分:0)
你真的不需要循环。以下将计算目录中的文件:
files=($(ls $1))
echo ${#files[@]}