实用脚本能批量删除吗?

wen 实用脚本 11

本文目录导读:

实用脚本能批量删除吗?

  1. 批量删除文件(Python)
  2. 批量删除数据库记录(SQL)
  3. Unix/Linux 批量删除命令
  4. 批量删除系统任务/进程(Shell)
  5. 批量删除邮箱邮件(PowerShell,适用于Exchange/Office 365)
  6. 重要安全建议

是的,实用脚本完全可以实现批量删除功能!具体实现方式取决于你想删除什么类型的内容(文件、数据库记录、系统日志、邮件等),以下是几种常见场景的批量删除脚本示例:

批量删除文件(Python)

import os
import glob
def batch_delete_files(path, pattern="*.txt"):
    """批量删除指定目录下匹配模式的文件"""
    files = glob.glob(os.path.join(path, pattern))
    for file in files:
        try:
            os.remove(file)
            print(f"已删除: {file}")
        except Exception as e:
            print(f"删除失败 {file}: {e}")
    print(f"共删除了 {len(files)} 个文件")
# 使用示例:删除当前目录下所有.log文件
batch_delete_files(".", "*.log")

批量删除数据库记录(SQL)

-- MySQL批量删除符合条件的数据
DELETE FROM users 
WHERE last_login < DATE_SUB(NOW(), INTERVAL 365 DAY)
LIMIT 1000;  -- 建议分批删除避免锁表
-- 批量删除并分批执行
DELIMITER $$
CREATE PROCEDURE batch_delete_old_records()
BEGIN
    DECLARE rows_affected INT DEFAULT 1;
    WHILE rows_affected > 0 DO
        DELETE FROM logs 
        WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY)
        LIMIT 1000;
        SET rows_affected = ROW_COUNT();
        DO SLEEP(1);  -- 暂停1秒减轻服务器压力
    END WHILE;
END$$
DELIMITER ;

Unix/Linux 批量删除命令

# 删除所有 .tmp 文件
find /path/to/dir -name "*.tmp" -type f -delete
# 安全模式:先查看再删除
find /path/to/dir -name "*.tmp" -type f -exec rm -i {} \;
# 删除30天前的日志文件
find /var/log -name "*.log" -type f -mtime +30 -delete

批量删除系统任务/进程(Shell)

#!/bin/bash
# 批量停止所有名为 "my_process" 的进程
ps aux | grep "[m]y_process" | awk '{print $2}' | xargs -r kill -9
# 批量删除crontab中的特定任务
crontab -l | grep -v "backup_script" | crontab -

批量删除邮箱邮件(PowerShell,适用于Exchange/Office 365)

# 批量删除超过90天的邮件
$days = 90
$mailbox = "user@domain.com"
Get-MailboxFolderStatistics -Identity $mailbox -FolderScope Inbox |
    Where-Object {$_.ItemsInFolder -gt 0} |
    ForEach-Object {
        $folder = $_.FolderPath
        Get-MailboxFolder -Identity "$mailbox:$folder" |
            Get-MailboxFolderStatistics |
            Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-$days) -and $_.ItemType -eq "IPM.Note"} |
            ForEach-Object {
                Remove-MailboxFolder -Identity $_.Identity -DeletePermanently -Confirm:$false
            }
    }

重要安全建议

  1. 先备份再删除:批量删除前务必做好数据备份
  2. 分批执行:删除大量数据时建议分批(如每次1000条)
  3. 测试环境验证:先在测试环境跑一遍脚本
  4. 日志记录:记录删除操作的时间和影响范围
  5. 确认模式:使用带确认的选项(如 -i 参数)初次运行

如果你有具体的删除需求(如特定类型的文件、特定条件下的数据),可以告诉我详细信息,我可以帮你定制更精准的脚本。

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