编写一个shell脚本计算当前目录和子目录c文件数量
时间: 2024-04-29 18:22:04 浏览: 151
可以使用 `find` 命令来查找当前目录及其子目录中的所有 `.c` 文件,然后再使用 `wc` 命令来统计文件数量。下面是一个简单的示例脚本:
```bash
#!/bin/bash
# 使用 find 命令查找当前目录及其子目录中的所有 .c 文件,并统计数量
count=$(find . -name "*.c" | wc -l)
# 输出结果
echo "当前目录及其子目录中共有 $count 个 .c 文件"
```
将上面的代码保存为一个 `.sh` 文件并赋予执行权限,然后在命令行中执行即可。注意,这个脚本只会统计 `.c` 文件,如果你需要计算其他类型的文件数量,需要相应地修改 `find` 命令中的参数。
相关问题
编写一个shell脚本,把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h” 提示:find,for循环
好的,以下是可以实现你的需求的shell脚本:
```bash
#!/bin/bash
# 递归查找当前目录下所有后缀为".txt"的文件并将其后缀改为".h"
find . -type f -name "*.txt" | while read filename
do
mv "$filename" "${filename%.txt}.h"
done
```
这个脚本会在当前目录下查找所有后缀为".txt"的文件,包括子目录中的文件,并将后缀名改为".h"。
注意,如果在脚本执行过程中遇到权限不足的问题,可以在命令前加上`sudo`以获取管理员权限。
编写一个 Shell 脚本,接受一个目录作为参数,递归遍历该目录下的所有文件以及子文件夹,统计输出.log文件与.txt文件数量、及相关文件路径
当然,我可以为您编写一个 Shell 脚本来实现这个功能。以下是一个示例脚本:
```shell
#!/bin/bash
# 检查参数是否存在
if [ $# -eq 0 ]; then
echo "请提供一个目录作为参数"
exit 1
fi
# 递归遍历目录
function traverse_directory() {
local dir=$1
local log_count=0
local txt_count=0
for file in "$dir"/*; do
if [ -f "$file" ]; then
if [[ "$file" == *.log ]]; then
echo "Log 文件:$file"
((log_count++))
elif [[ "$file" == *.txt ]]; then
echo "Txt 文件:$file"
((txt_count++))
fi
elif [ -d "$file" ]; then
traverse_directory "$file"
fi
done
if [ $log_count -gt 0 ]; then
echo "总共找到 $log_count 个 Log 文件在目录:$dir"
fi
if [ $txt_count -gt 0 ]; then
echo "总共找到 $txt_count 个 Txt 文件在目录:$dir"
fi
}
# 调用函数遍历目录
traverse_directory "$1"
```
您可以将这个脚本保存为 `count_files.sh`,然后在命令行中运行它,例如:
```shell
bash count_files.sh /path/to/directory
```
请将 `/path/to/directory` 替换为您要统计文件的目录路径。脚本会递归遍历目录,并输出所有找到的 `.log` 和 `.txt` 文件的路径,并显示总数量。
希望这能帮到您!如果您有其他问题,请随时提问。
阅读全文