目录文件计数
我们要实现一个脚本,它会对PATH环境变量中定义的目录里的可执行文件进行计数。
首先,查看一下PATH环境变量
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PATH中的每个路径由冒号分隔。要获取可在脚本中使用的目录列表,就必须用空格来替换冒号。现在你会发现sed编辑器用一条简单表达式就能完成替换工作。
$ echo $PATH | sed 's/:/ /g'
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /root/bin
分离出目录之后,你就可以使用标准for语句来遍历每个目录。
mypath=$(echo $PATH | sed 's/:/ /g')
for directory in $mypath
do
...
done
一旦获得了单个目录,就可以用ls命令来列出每个目录中的文件,并用另一个for语句来遍历每个文件,为文件计数器增值。
这个脚本的最终版本如下。
$ cat countFiles
#!/bin/bash
#count numbers of files in your PATH
mypath=$(echo $PATH | sed 's/:/ /g')
count=0
for directory in $mypath
do
check=$(ls $directory)
for item in $check
do
count=$[$count+1]
done
echo "$directory - $count"
count=0
done
$ ./countFiles
/usr/local/sbin - 0
/usr/local/bin - 3
/usr/sbin - 480
/usr/bin - 948
ls: cannot access /root/bin: No such file or directory
/root/bin - 0