作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,如何利用2种方式,查找3级目录的文件,最后一行第一个字母?

在运维工作中,如果需要查找三级目录中的文件,并提取每个文件最后一行的第一个字母,可以使用以下两种方法:find命令结合tailcut,以及find命令结合awk。这两种方法都能高效地完成任务,具体选择取决于个人偏好和实际需求。

1. 使用find命令结合tailcut
1.1 分两步
  1. 使用find命令查找三级目录中的文件。
  2. 对每个文件,使用tail获取最后一行,再用cut提取第一个字母。
1.2 脚本示例
#!/bin/bash

# 定义目标目录(当前目录)
target_dir="."

# 使用find查找三级目录中的文件
find "$target_dir" -mindepth 3 -type f | while read -r file; do
    # 检查文件是否至少有一行
    if [ $(wc -l < "$file") -ge 1 ]; then
        # 获取最后一行的第一个字母
        last_char=$(tail -n 1 "$file" | cut -c1)
        echo "文件: $file, 最后一行的第一个字母: $last_char"
    else
        echo "文件 $file 为空,跳过处理。"
    fi
done
1.3 示例说明
  1. find命令

    find "$target_dir" -mindepth 3 -type f
    
    • -mindepth 3:确保只查找三级目录中的文件。
    • -type f:确保只查找文件,而不是目录。
  2. tail命令

    tail -n 1 "$file"
    
    • 获取文件的最后一行。
  3. cut命令

    cut -c1
    
    • 提取最后一行的第一个字符。
2. 使用find命令结合awk
2.1 分两步
  1. 使用find命令查找三级目录中的文件。
  2. 对每个文件,使用awk获取最后一行的第一个字母。
2.2 脚本示例
#!/bin/bash

# 定义目标目录(当前目录)
target_dir="."

# 使用find查找三级目录中的文件
find "$target_dir" -mindepth 3 -type f | while read -r file; do
    # 检查文件是否至少有一行
    if [ $(wc -l < "$file") -ge 1 ]; then
        # 使用awk获取最后一行的第一个字母
        last_char=$(awk 'END {print substr($0, 1, 1)}' "$file")
        echo "文件: $file, 最后一行的第一个字母: $last_char"
    else
        echo "文件 $file 为空,跳过处理。"
    fi
done
2.3 示例说明
  1. find命令
    与方法一相同,用于查找三级目录中的文件。

  2. awk命令

    awk 'END {print substr($0, 1, 1)}' "$file"
    
    • END:在处理完所有行后执行。
    • substr($0, 1, 1):提取当前行的第一个字符。
3. 两种方法的对比
  1. tailcut方法

    • 优点:简单直观,适合快速提取最后一行的第一个字符。
    • 缺点:需要多次调用命令(tailcut),效率略低。
  2. awk方法

    • 优点:单个命令完成任务,效率更高,代码更简洁。
    • 缺点:需要对awk语法有一定了解。
4. 运行脚本
  1. 将脚本保存为extract_last_char.sh

  2. 确保脚本具有可执行权限:

    chmod +x extract_last_char.sh
    
  3. 运行脚本:

    ./extract_last_char.sh
    
5. 输出示例

假设目录中有以下文件内容:

# file1.txt
hello
world
# file2.txt
abc
def
ghi

脚本输出:

文件: ./dir1/dir2/file1.txt, 最后一行的第一个字母: w
文件: ./dir1/dir2/file2.txt, 最后一行的第一个字母: g
6. 我的总结

综上所述,通过上述两种方法,可以快速查找三级目录中的文件,并提取每个文件最后一行的第一个字母。tailcut方法适合简单的场景,而awk方法则更加高效和灵活。根据实际需求选择合适的方法即可。

posted @ 2025-03-13 09:53  黄嘉波  阅读(56)  评论(0)    收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波