编写一个 Shell 脚本,接受一个目录作为参数,递归遍历该目录下的所有文件以及子文件夹,统计输出.log文件与.txt文件数量、及相关文件路径
时间: 2024-04-11 15:29:18 浏览: 59
Shell脚本统计当前目录下目录和文件的数量
你可以尝试以下的 Shell 脚本来实现这个功能:
```bash
#!/bin/bash
function count_files() {
local directory=$1
local log_count=0
local txt_count=0
# 遍历目录中的文件和文件夹
for file in "$directory"/*; do
if [ -f "$file" ]; then
# 如果是文件,则判断文件类型并增加相应计数
if [[ $file == *.log ]]; then
((log_count++))
elif [[ $file == *.txt ]]; then
((txt_count++))
fi
echo "$file"
elif [ -d "$file" ]; then
# 如果是文件夹,则递归调用 count_files 函数
count_files "$file"
fi
done
echo "log 文件数量: $log_count"
echo "txt 文件数量: $txt_count"
}
# 检查参数个数是否正确
if [ $# -ne 1 ]; then
echo "请提供一个目录作为参数"
exit 1
fi
# 检查目录是否存在
if [ ! -d "$1" ]; then
echo "目录不存在"
exit 1
fi
count_files "$1"
```
你可以将以上代码保存为一个脚本文件(例如 `count_files.sh`),然后在终端中运行该脚本并指定一个目录作为参数,例如:
```bash
$ bash count_files.sh /path/to/directory
```
脚本将会递归遍历指定的目录,并输出所有 `.log` 和 `.txt` 文件的数量,以及相关文件的路径。
阅读全文