编写一个shell脚本 通过for遍历多个.log日志并打印.log日志最后一行
时间: 2023-03-01 18:59:22 浏览: 178
以下是一个示例 shell 脚本,它通过 for 循环遍历多个 .log 日志文件,并打印出 .log 日志文件的最后一行:
```
#!/bin/bash
# 遍历当前目录下所有 .log 文件
for logfile in *.log
do
# 获取 .log 文件的最后一行
last_line=$(tail -n 1 $logfile)
# 打印 .log 文件的最后一行
echo "$logfile 最后一行:$last_line"
done
```
请注意,上面的代码假定遍历的日志文件都存在于当前目录下。如果你需要遍历其他目录中的日志文件,请修改 `*.log` 部分。
相关问题
编写一个 Shell 脚本,接受一个目录作为参数,递归遍历该目录下的所有文件以及子文件夹,统计输出.log文件与.txt文件数量、及相关文件路径
当然,以下是一个用于递归遍历目录并统计.log文件和.txt文件数量的Shell脚本示例:
```shell
#!/bin/bash
# 定义函数用于递归遍历目录
function traverse_directory() {
local dir=$1
# 遍历当前目录下的所有文件和文件夹
for file in "$dir"/*; do
if [ -f "$file" ]; then
# 如果是文件,则检查文件扩展名
extension="${file##*.}"
if [ "$extension" == "log" ]; then
((log_count++))
echo "Log文件: $file"
elif [ "$extension" == "txt" ]; then
((txt_count++))
echo "Txt文件: $file"
fi
elif [ -d "$file" ]; then
# 如果是文件夹,则递归调用函数遍历子目录
traverse_directory "$file"
fi
done
}
# 检查是否提供了目录参数
if [ $# -eq 0 ]; then
echo "请提供目录作为参数"
exit 1
fi
# 初始化计数器
log_count=0
txt_count=0
# 调用函数遍历目录
traverse_directory "$1"
# 输出统计结果
echo "Log文件数量: $log_count"
echo "Txt文件数量: $txt_count"
```
你可以将上述代码保存为一个脚本文件(例如`file_counter.sh`),然后在终端中运行该脚本,提供一个目录作为参数。脚本将递归遍历该目录及其子目录,统计.log文件和.txt文件的数量,并输出相应的文件路径。
例如,如果你的脚本文件名为`file_counter.sh`,你可以运行以下命令来统计`/path/to/directory`目录下的文件:
```shell
bash file_counter.sh /path/to/directory
```
脚本将输出.log文件和.txt文件的数量,并列出每个文件的路径。
帮我编写一个shell脚本,用来获取服务器上tomcat的最近两个月的log
以下是一个示例 shell 脚本,用来获取服务器上 Tomcat 的最近两个月的 log:
```bash
#!/bin/bash
# 设置 Tomcat 日志文件目录
log_dir="/usr/local/tomcat/logs"
# 获取最近两个月的日期
two_months_ago=$(date -d "2 months ago" +%Y-%m)
# 在 log 文件目录中查找包含最近两个月日期的文件
log_files=$(find $log_dir -name "*$two_months_ago*")
# 循环遍历文件并打印
for file in $log_files
do
echo "Printing log file: $file"
cat $file
done
```
请注意,上面的脚本假设 Tomcat 的日志文件目录为 "/usr/local/tomcat/logs",如果你的服务器上的目录不同,请修改相应的路径。
上面这个脚本执行后会在控制台输出最近两个月的日志,如果想把日志保存到文件中,可以在循环中使用">>"来追加输出到文件。