本文目录导读:

可以,批量截断(truncate)通常指对文件内容、字符串或数据库表进行裁剪,根据你的实际需求,这里提供几种常见场景的实用脚本方案:
批量截断文件内容(保留前N行/字符)
Shell脚本(Linux/macOS)
#!/bin/bash
# truncate_files.sh - 批量截断文件,保留前100行
TARGET_DIR="/path/to/files"
MAX_LINES=100
for file in "$TARGET_DIR"/*.txt; do
if [ -f "$file" ]; then
echo "截断: $file"
# 方法1:直接截断(会修改原文件)
head -n $MAX_LINES "$file" > "${file}.tmp" && mv "${file}.tmp" "$file"
# 方法2:保留备份
# head -n $MAX_LINES "$file" > "${file}.truncated"
fi
done
按字节/字符截断
for file in *.txt; do
# 保留每个文件前5000字节
dd if="$file" of="${file}.truncated" bs=1 count=5000 2>/dev/null
done
批量截断文件名(重命名)
# truncate_filename.py - 批量截断文件名
import os
import glob
# 截断到指定长度(例如保留前15个字符)
MAX_NAME_LEN = 15
EXTENSION = ".txt"
for filepath in glob.glob(f"*{EXTENSION}"):
basename = os.path.splitext(filepath)[0]
if len(basename) > MAX_NAME_LEN:
new_name = basename[:MAX_NAME_LEN] + EXTENSION
os.rename(filepath, new_name)
print(f"重命名: {filepath} -> {new_name}")
批量截断数据库表(PostgreSQL/MySQL)
PostgreSQL批量截断所有表
-- 生成截断语句
SELECT 'TRUNCATE TABLE "' || tablename || '" CASCADE;'
FROM pg_tables
WHERE schemaname = 'public';
-- 或一次性执行(谨慎!)
DO $$
DECLARE
r RECORD;
BEGIN
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
EXECUTE 'TRUNCATE TABLE ' || quote_ident(r.tablename) || ' CASCADE;';
END LOOP;
END $$;
MySQL批量截断
#!/bin/bash
# truncate_mysql.sh - 批量截断指定数据库的所有表
DB_NAME="your_database"
MYSQL_USER="root"
MYSQL_PASS="password"
mysql -u$MYSQL_USER -p$MYSQL_PASS $DB_NAME -e "
SELECT CONCAT('TRUNCATE TABLE ', table_name, ';')
FROM information_schema.tables
WHERE table_schema = '$DB_NAME';
" | tail -n +2 | mysql -u$MYSQL_USER -p$MYSQL_PASS $DB_NAME
截断日志文件(保留最新部分)
#!/bin/bash
# truncate_logs.sh - 保留日志文件最后1000行
LOG_DIR="/var/log/myapp"
for logfile in "$LOG_DIR"/*.log; do
if [ -f "$logfile" ]; then
# 获取文件行数
lines=$(wc -l < "$logfile")
if [ "$lines" -gt 1000 ]; then
# 截断到最后1000行
tail -n 1000 "$logfile" > "${logfile}.tmp" && mv "${logfile}.tmp" "$logfile"
echo "已截断: $logfile ($lines -> 1000行)"
fi
fi
done
批量截断字符串(Python)
# truncate_strings.py - 处理CSV等文本文件中的长字符串
import pandas as pd
# 读取CSV文件,截断所有字符串列到100字符
df = pd.read_csv('input.csv', dtype=str)
for col in df.columns:
df[col] = df[col].apply(lambda x: x[:100] if isinstance(x, str) and len(x) > 100 else x)
df.to_csv('truncated.csv', index=False)
使用建议
| 场景 | 推荐工具 | 注意事项 |
|---|---|---|
| 截断文件行数 | head/tail |
会丢失数据,务必先备份 |
| 截断文件名 | Python/Perl | 注意处理相同前缀的重名 |
| 数据库截断 | SQL脚本 | 无法回滚,先锁表或备份 |
| 日志管理 | logrotate |
专业工具更适合生产环境 |
安全第一:所有截断操作都是不可逆的,强烈建议:
- 先对测试数据运行脚本
- 添加
--dry-run参数模拟运行 - 在运行前备份数据
- 确认正确定义“截断”的统一规则
如果你有更具体的文件类型或截断规则,请补充说明,我可以提供定制化脚本。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播