批量删除文件头信息脚本

wen 实用脚本 2

本文目录导读:

批量删除文件头信息脚本

  1. 删除文件开头的固定字节数
  2. 删除文件开头的固定行数
  3. 删除到指定标记(如删除到 "BEGIN_DATA")
  4. 删除二进制文件的特定头部
  5. 交互式批量删除工具
  6. 带备份功能的删除脚本
  7. 使用方法
  8. 注意事项

删除文件开头的固定字节数

#!/bin/bash
# 删除文件开头指定字节数(删除前100字节)
HEADER_SIZE=100  # 要删除的字节数
# 批量处理当前目录下所有.txt文件
for file in *.txt; do
    if [ -f "$file" ]; then
        echo "处理文件: $file"
        # 跳过前HEADER_SIZE字节,将剩余内容写入临时文件
        tail -c +$((HEADER_SIZE+1)) "$file" > "$file.tmp"
        mv "$file.tmp" "$file"
        echo "✓ 已完成"
    fi
done

删除文件开头的固定行数

#!/bin/bash
# 删除文件开头的指定行数(删除前10行)
LINE_COUNT=10  # 要删除的行数
# 批量处理当前目录下所有.py文件
for file in *.py; do
    if [ -f "$file" ]; then
        echo "处理文件: $file"
        # 跳过前10行,将剩余内容写入临时文件
        tail -n +$((LINE_COUNT+1)) "$file" > "$file.tmp"
        mv "$file.tmp" "$file"
        echo "✓ 已完成"
    fi
done

删除到指定标记(如删除到 "BEGIN_DATA")

#!/bin/bash
# 删除文件开头直到包含指定标记的行
MARKER="BEGIN_DATA"  # 删除到此标记之前的内容(包含标记行)
for file in *.dat; do
    if [ -f "$file" ]; then
        echo "处理文件: $file"
        # 找到标记行的行号
        LINE_NUM=$(grep -n "^$MARKER" "$file" | head -1 | cut -d: -f1)
        if [ -n "$LINE_NUM" ]; then
            # 从标记行开始保留
            tail -n +$LINE_NUM "$file" > "$file.tmp"
            mv "$file.tmp" "$file"
            echo "✓ 已删除到第 $LINE_NUM 行(保留标记行)"
        else
            echo "✗ 未找到标记: $MARKER"
        fi
    fi
done

删除二进制文件的特定头部

#!/usr/bin/env python3
# 批量删除二进制文件头部信息
import os
import glob
# 配置
HEADER_SIZE = 1024  # 要删除的字节数
FILE_PATTERN = "*.bin"  # 文件模式
# 批量处理文件
for filepath in glob.glob(FILE_PATTERN):
    try:
        with open(filepath, 'rb') as f:
            content = f.read()
        # 删除头部
        new_content = content[HEADER_SIZE:]
        # 写回文件
        with open(filepath, 'wb') as f:
            f.write(new_content)
        print(f"✓ 已处理: {filepath}")
    except Exception as e:
        print(f"✗ 处理失败: {filepath} - {str(e)}")

交互式批量删除工具

#!/bin/bash
# 交互式批量删除文件头工具
show_menu() {
    echo "===== 批量删除文件头工具 ====="
    echo "1) 按字节数删除"
    echo "2) 按行数删除"
    echo "3) 删除到指定标记"
    echo "4) 退出"
    echo "=============================="
}
# 主程序
while true; do
    show_menu
    read -p "请选择操作: " CHOICE
    case $CHOICE in
        1)
            read -p "请输入要删除的字节数: " BYTES
            read -p "请输入文件类型(如 *.txt): " PATTERN
            for file in $PATTERN; do
                if [ -f "$file" ]; then
                    tail -c +$((BYTES+1)) "$file" > "$file.tmp"
                    mv "$file.tmp" "$file"
                    echo "✓ 已处理: $file"
                fi
            done
            ;;
        2)
            read -p "请输入要删除的行数: " LINES
            read -p "请输入文件类型(如 *.txt): " PATTERN
            for file in $PATTERN; do
                if [ -f "$file" ]; then
                    tail -n +$((LINES+1)) "$file" > "$file.tmp"
                    mv "$file.tmp" "$file"
                    echo "✓ 已处理: $file"
                fi
            done
            ;;
        3)
            read -p "请输入标记字符: " MARK
            read -p "请输入文件类型(如 *.txt): " PATTERN
            for file in $PATTERN; do
                if [ -f "$file" ]; then
                    LINE_NUM=$(grep -n "$MARK" "$file" | head -1 | cut -d: -f1)
                    if [ -n "$LINE_NUM" ]; then
                        tail -n +$LINE_NUM "$file" > "$file.tmp"
                        mv "$file.tmp" "$file"
                        echo "✓ 已处理: $file"
                    fi
                fi
            done
            ;;
        4)
            echo "再见!"
            exit 0
            ;;
        *)
            echo "无效选择"
            ;;
    esac
    echo ""
done

带备份功能的删除脚本

#!/bin/bash
# 带备份功能的批量删除文件头
BACKUP_DIR="backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
HEADER_SIZE=100  # 要删除的字节数
for file in *.txt; do
    if [ -f "$file" ]; then
        # 备份原文件
        cp "$file" "$BACKUP_DIR/$file.bak"
        # 删除头部
        tail -c +$((HEADER_SIZE+1)) "$file" > "$file.tmp"
        mv "$file.tmp" "$file"
        echo "✓ 已处理: $file (备份在 $BACKUP_DIR)"
    fi
done
echo "处理完成!备份目录: $BACKUP_DIR"

使用方法

  1. 选择适合的脚本:根据需求选择对应功能的脚本
  2. 修改配置:调整脚本中的参数(字节数、行数、文件类型等)
  3. 测试运行:建议先在test目录测试
  4. 正式使用:确认无误后在目标目录运行

注意事项

  • ⚠️ 备份原文件:操作前务必备份重要数据
  • ⚠️ 先在样本测试:建议先在少量文件上测试
  • ⚠️ 确认编码:处理文本文件时注意编码格式
  • ⚠️ 权限问题:确保对文件有读写权限

需要更具体的功能或对某个脚本进行修改,请告诉我!

抱歉,评论功能暂时关闭!