本文目录导读:

我来帮你写一个文件批量删除脚本,包含Windows和Linux两个版本,并附带安全保护措施。
Windows PowerShell 脚本
# delete_files.ps1 - 批量删除文件脚本
# 配置参数
$targetDirectory = "C:\path\to\your\directory" # 目标目录
$filePattern = "*.tmp" # 文件匹配模式
$logFile = "C:\path\to\delete_log.txt" # 日志文件路径
# 安全模式(true=只显示要删除的文件,不实际删除)
$previewMode = $true
# 获取要删除的文件列表
$filesToDelete = Get-ChildItem -Path $targetDirectory -Filter $filePattern -Recurse
# 显示文件数量
Write-Host "找到 $($filesToDelete.Count) 个匹配文件" -ForegroundColor Yellow
# 预览或删除文件
foreach ($file in $filesToDelete) {
if ($previewMode) {
Write-Host "[预览] 会删除: $($file.FullName)" -ForegroundColor Gray
} else {
try {
Remove-Item -Path $file.FullName -Force
Write-Host "[已删除] $($file.FullName)" -ForegroundColor Green
# 记录删除日志
"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - 已删除: $($file.FullName)" |
Out-File -FilePath $logFile -Append
} catch {
Write-Host "[错误] 删除失败: $($file.FullName) - $_" -ForegroundColor Red
}
}
}
# 完成提示
if ($previewMode) {
Write-Host "`n预览完成,确认要删除请将 `$previewMode 设为 false" -ForegroundColor Cyan
} else {
Write-Host "`n删除完成,共删除 $($filesToDelete.Count) 个文件" -ForegroundColor Cyan
}
使用前: 修改 $targetDirectory 和 $filePattern 变量
运行: .\delete_files.ps1(需先执行 Set-ExecutionPolicy RemoteSigned)
Linux Bash 脚本
#!/bin/bash
# delete_files.sh - 批量删除文件脚本
# 配置参数
TARGET_DIR="/path/to/your/directory" # 目标目录
FILE_PATTERN="*.log" # 文件匹配模式
LOG_FILE="/path/to/delete_log.txt" # 日志文件路径
# 安全模式(1=只显示不删除,0=执行删除)
PREVIEW_MODE=1
# 查找文件
if [ "$PREVIEW_MODE" -eq 1 ]; then
echo "=== 预览模式 ==="
find "$TARGET_DIR" -type f -name "$FILE_PATTERN" -print | while read file; do
echo "[预览] 会删除: $file"
done
FILE_COUNT=$(find "$TARGET_DIR" -type f -name "$FILE_PATTERN" | wc -l)
echo "共找到 $FILE_COUNT 个文件"
echo "若要执行删除,请将 PREVIEW_MODE 改为 0"
else
echo "=== 开始删除 ==="
find "$TARGET_DIR" -type f -name "$FILE_PATTERN" -print | while read file; do
if rm -f "$file"; then
echo "[已删除] $file"
echo "$(date '+%Y-%m-%d %H:%M:%S') - 已删除: $file" >> "$LOG_FILE"
else
echo "[错误] 删除失败: $file"
fi
done
FILE_COUNT=$(find "$TARGET_DIR" -type f -name "$FILE_PATTERN" | wc -l)
echo "删除完成"
fi
使用前: 修改 TARGET_DIR 和 FILE_PATTERN 变量,并执行 chmod +x delete_files.sh
常用删除模式示例
按文件类型删除
# 删除所有 .tmp 文件 find . -type f -name "*.tmp" -delete # 删除所有 .log 文件(保留7天内) find . -type f -name "*.log" -mtime +7 -delete
按文件名模式删除
# 删除包含 "backup" 的文件 find . -type f -name "*backup*" -delete # 删除以 "test" 开头的文件 find . -type f -name "test*" -delete
按文件大小删除
# 删除大于 100MB 的文件 find . -type f -size +100M -delete # 删除空文件 (0字节) find . -type f -empty -delete
安全最佳实践
永远先预览
# 预览模式,查看将删除哪些文件 find /target/dir -type f -name "*.tmp" -print
使用回收站代替直接删除(Linux)
# 创建回收函数
function safe_delete() {
mkdir -p ~/.trash
mv "$1" ~/.trash/
}
# 使用示例
find . -type f -name "*.tmp" | while read f; do safe_delete "$f"; done
备份重要数据
# 删除前先备份 tar -czf backup_$(date +%Y%m%d).tar.gz /target/dir/*.tmp # 然后删除 rm -f /target/dir/*.tmp
交互式删除脚本
#!/bin/bash
# interactive_delete.sh - 交互式批量删除
echo "=== 交互式批量删除 ==="
echo "文件模式(如:*.tmp): "
read PATTERN
echo "目录路径: "
read DIRECTORY
# 显示匹配的文件
echo "找到以下文件: "
find "$DIRECTORY" -type f -name "$PATTERN" -exec ls -lh {} \;
echo "确认删除这些文件?(y/n): "
read CONFIRM
if [ "$CONFIRM" = "y" ]; then
find "$DIRECTORY" -type f -name "$PATTERN" -delete
echo "已删除"
else
echo "取消删除"
fi
使用建议
- 始终先使用预览模式测试
- 确认目标路径正确后再执行
- 定期备份重要数据
- 使用绝对路径避免误删除
- 记录日志便于追踪操作
选择适合你需求的版本,并根据实际情况调整参数。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播