编写一个shell脚本 通过for遍历多个.log日志并打印.log日志最后一行
时间: 2023-03-01 20:59:22 浏览: 373
以下是一个示例 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文件数量、及相关文件路径
Sure! Here's a shell script that accepts a directory as a parameter, recursively traverses all files and subdirectories within that directory, and outputs the count of `.log` and `.txt` files along with their respective file paths:
```bash
#!/bin/bash
# Function to recursively traverse directory
traverse_directory() {
local dir=$1
# Loop through each file and subdirectory in the given directory
for file in "$dir"/*; do
if [ -f "$file" ]; then
# Check if the file has .log or .txt extension
if [[ $file == *.log ]]; then
echo "Log file found: $file"
((log_count++))
elif [[ $file == *.txt ]]; then
echo "Text file found: $file"
((txt_count++))
fi
elif [ -d "$file" ]; then
# Recursively call the function for subdirectories
traverse_directory "$file"
fi
done
}
# Check if directory is provided as argument
if [ $# -eq 0 ]; then
echo "Please provide a directory as an argument."
exit 1
fi
# Initialize file count variables
log_count=0
txt_count=0
# Call the function to traverse the directory
traverse_directory "$1"
# Output the file counts
echo "Number of log files: $log_count"
echo "Number of text files: $txt_count"
```
To use this script, save it to a file (e.g., `file_count.sh`), make it executable using `chmod +x file_count.sh`, and then run it with the desired directory as the argument:
```bash
./file_count.sh /path/to/directory
```
Replace `/path/to/directory` with the actual directory path you want to traverse. The script will recursively search for `.log` and `.txt` files and print their counts along with the file paths.
编写一个 Shell 脚本,接受一个目录作为参数,递归遍历该目录下的所有文件以及子文件夹,统计输出.log文件与.txt文件数量、及相关文件路径
你可以使用以下的shell脚本来接受一个目录作为参数,递归遍历该目录下的所有文件和子文件夹,并统计输出.log文件和.txt文件的数量以及相关文件的路径:
```shell
#!/bin/bash
directory=$1
log_count=0
txt_count=0
function count_files() {
local dir=$1
# 遍历目录中的文件和文件夹
for file in "$dir"/*; do
if [[ -f "$file" ]]; then
# 如果是.log文件
if [[ "$file" == *.log ]]; then
((log_count++))
echo "Log 文件路径: $file"
fi
# 如果是.txt文件
if [[ "$file" == *.txt ]]; then
((txt_count++))
echo "Txt 文件路径: $file"
fi
elif [[ -d "$file" ]]; then
# 递归处理子文件夹
count_files "$file"
fi
done
}
count_files "$directory"
echo "Log 文件数量: $log_count"
echo "Txt 文件数量: $txt_count"
```
这个脚本首先将传递给脚本的第一个参数(即目录路径)保存到`directory`变量中。然后定义了一个名为`count_files`的函数,用于递归遍历目录及其子目录中的所有文件和文件夹。
在`count_files`函数中,首先使用`for`循环遍历目录中的所有文件和文件夹。如果当前项是一个文件(使用`-f`判断),则判断文件的后缀名是`.log`还是`.txt`,并分别对计数变量进行递增操作,并输出文件路径。如果当前项是一个文件夹(使用`-d`判断),则递归调用`count_files`函数处理该子文件夹。
最后,在主函数中调用`count_files`函数,传递目录路径作为参数,进行遍历。
你可以将这个脚本保存为一个.sh文件,然后在终端中运行该脚本并指定目录路径作为参数,脚本将输出.log文件和.txt文件的数量,并输出相关文件的路径。例如,假设脚本名为`count_files.sh`,你可以运行以下命令:
```shell
bash count_files.sh /path/to/directory
```
其中`/path/to/directory`是你要统计的目录的实际路径。脚本会输出.log文件和.txt文件的数量,并列出相关文件的路径。
阅读全文