目录
需求1:
获取Linux指定路径下文件夹和文件个数
1. 实现代码
#!/bin/bash
fun_directory() {
dir="/home/q/2023-05-20/" #想获取的路径
let "filenum=0"
let "dirnum=0"
for i in $(dir)
do
if [ -d $i ]; then
let dirnum+=1
else
let filenum+=1
fi
done
echo "The number of directorys is $dirnum"
echo "The number of files is $filenum"
}
fun_directory
需求2:
设当前目录下有若干子目录及普通文件。编写shell脚本,统计当前目录下的子目录数,文件总数,以及有执行权限的文件数并输出统计结果。
2. 实现代码
#!/bin/bash
workdir=$(cd $(dirname $0); pwd)
count=0
for file in $(ls $(dirname $0))
do
echo $file
if test -x $file
then
count=`expr $count + 1`
fi
done
#该目录下文件总数,包括子目录下文件数量
filesum=`ls -lR $workdir | grep "^-"| wc -l`
#该目录下子目录数
dirsum=`ls -l $workdir | grep "^d"| wc -l`
#输出展示结果
echo "当前目录下文件总数为:\e[1;32m $filesum \e[0m ,子目录数量为:\e[1;32m $dirsum \e[0m "
echo "当前目录下可执行文件数为:$count"
exit 0
2. 其他Linux指令
1、 统计当前文件夹下文件的个数
ls -l |grep "^-"|wc -l
2、 统计当前文件夹下目录的个数
ls -l |grep "^d"|wc -l
3、统计当前文件夹下文件的个数,包括子文件夹里的
ls -lR|grep "^-"|wc -l
4、统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep "^d"|wc -l
grep "^-"
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
判断目录下文件数与指定文件数量是否相等