本文目录导读:

当然可以!实用脚本完全可以批量格式化,而且这正是脚本的强项之一,批量格式化能极大提高效率,尤其是在处理大量文件时。
核心思路:使用脚本循环遍历多个文件,对每个文件执行格式化命令/函数。
下面我会从 常见场景 和 具体脚本示例 两方面给你一些实用方案。
常见批量格式化场景
- 代码文件格式化(最常用)
- 前端:HTML, CSS, JavaScript/TypeScript, JSON, Markdown
- 后端:Python, Go, Java, C++, SQL
- 数据文件格式化
- 表格数据:CSV, Excel (.xlsx, .xls)
- 配置文件:YAML, TOML, INI
- 日志文件:统一时间戳、对齐列
- 文本文件格式化
- JSON/XML 缩进美化/压缩
- Markdown 表格对齐
- 去除多余空格、统一换行符
- 图片/视频元数据格式化(较少见但实用)
EXIF 信息清理或统一
实用脚本示例(Shell/Bash + 常见工具)
批量格式化 JavaScript/TypeScript/CSS/JSON 文件 (使用 prettier)
prettier 是一个很流行的代码格式化工具,支持多种语言。
#!/bin/bash
# 文件名: format-code.sh
# 用法: ./format-code.sh
# 确保 prettier 已安装 (npm install -g prettier)
echo "开始格式化所有 .js, .ts, .css, .json 文件..."
# 使用 find 查找文件,-exec 对每个文件执行 prettier --write
find ./src -type f \( -name "*.js" -o -name "*.ts" -o -name "*.css" -o -name "*.json" \) \
-exec npx prettier --write {} \;
echo "格式化完成!"
进阶:使用 prettier --list-different 可以先检查差异,再决定是否写入。
批量格式化 Python 文件 (使用 black)
black 是 Python 的代码格式化工具,风格非常统一。
#!/bin/bash # 文件名: format-python.sh # 用法: ./format-python.sh # 确保 black 已安装 (pip install black) echo "开始格式化所有 .py 文件..." # 对整个目录直接运行 black 即可递归处理 black ./src --line-length 120 # 设置最大行宽 echo "Python 格式化完成!"
批量格式化 JSON 文件 (使用 jq)
jq 是处理 JSON 的瑞士军刀,也可以用于格式化(美化输出)。
#!/bin/bash
# 文件名: format-json.sh
# 用法: ./format-json.sh
echo "开始格式化当前目录下所有 .json 文件..."
# 备份原始文件(可选)
mkdir -p ./json_backup
for file in *.json; do
if [ -f "$file" ]; then
echo "格式化: $file"
# 备份原始文件
cp "$file" "./json_backup/${file}.bak"
# 使用 jq 格式化(缩进为4空格)
jq --indent 4 '.' "$file" > "${file}.tmp" && mv "${file}.tmp" "$file"
fi
done
echo "所有 JSON 文件格式化完成,原始备份保存在 ./json_backup/"
批量格式化 Markdown 表格 (使用 pandoc + vim 或其他)
Markdown 表格对齐相对复杂,一个实用方法是使用 pandoc 的表格功能,或借助 vim 宏。
简化方案:使用 markdown-table-formatter 工具(Node.js)
# 安装: npm install -g markdown-table-formatter
# 批量格式化当前目录及子目录下所有 .md 文件
#!/bin/bash
# 文件名: format-md-table.sh
echo "格式化所有 Markdown 文件中的表格..."
# 使用 find + xargs 高效处理
find ./docs -name "*.md" -print0 | xargs -0 -I {} sh -c '
echo "处理: {}"
markdown-table-formatter {} -w # -w 表示覆盖写入
'
echo "Markdown 表格格式化完成!"
批量格式化 CSV/Excel 文件 (使用 Python + pandas)
#!/usr/bin/env python3
# 文件名: format_tables.py
# 用法: python3 format_tables.py
import pandas as pd
import glob
import os
def format_csv(filepath):
"""格式化单个 CSV 文件:统一编码、去除首尾空格、标准化日期"""
try:
# 尝试多种编码读取
for enc in ['utf-8', 'gbk', 'latin1']:
try:
df = pd.read_csv(filepath, encoding=enc)
break
except:
continue
else:
print(f"无法读取: {filepath}")
return
# 去除所有字符串列的首尾空格
df = df.apply(lambda col: col.str.strip() if col.dtype == 'object' else col)
# 写入为 UTF-8(无 BOM)
df.to_csv(filepath, index=False, encoding='utf-8-sig')
print(f"已格式化: {filepath}")
except Exception as e:
print(f"格式化失败 {filepath}: {e}")
def format_excel(filepath):
"""格式化 Excel 文件(类似操作)"""
try:
df = pd.read_excel(filepath)
df = df.apply(lambda col: col.str.strip() if col.dtype == 'object' else col)
df.to_excel(filepath, index=False)
print(f"已格式化: {filepath}")
except Exception as e:
print(f"格式化失败 {filepath}: {e}")
# 批量处理
if __name__ == "__main__":
print("开始批量格式化表格文件...")
# 处理所有 CSV 文件
for f in glob.glob("./data/**/*.csv", recursive=True):
format_csv(f)
# 处理所有 Excel 文件
for f in glob.glob("./data/**/*.xlsx", recursive=True):
format_excel(f)
print("所有表格格式化完成!")
通用批量格式化脚本模板
这是一个非常通用的 Shell 脚本模板,你可以根据需要修改:
#!/bin/bash
# 通用批量格式化脚本模板
# 使用方式: ./batch_format.sh [目录路径] [文件后缀]
# 默认参数
TARGET_DIR="${1:-.}" # 默认为当前目录
FILE_EXT="${2:-*.txt}" # 默认为 .txt 文件
BACKUP_DIR="${TARGET_DIR}/bak_$(date +%Y%m%d_%H%M%S)"
# 定义格式化函数
format_file() {
local file="$1"
echo "正在格式化: $file"
# --- 在这里替换你的格式化逻辑 ---
# 示例:使用 sed 去除行尾空格
sed -i 's/[[:space:]]*$//' "$file"
# ---------------------------------
}
# 主逻辑
echo "开始批量格式化..."
echo "目录: $TARGET_DIR"
echo "后缀: $FILE_EXT"
echo "备份: $BACKUP_DIR"
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 查找文件并处理
find "$TARGET_DIR" -type f -name "$FILE_EXT" | while read -r file; do
# 备份原始文件
cp "$file" "$BACKUP_DIR/"
# 格式化
format_file "$file"
done
echo "批量格式化完成!原始文件备份在: $BACKUP_DIR"
高级技巧与建议
- 先备份:批量操作前务必先备份,或将脚本设计为生成新文件(如
.formatted),安全第一。 - 幂等性:好的格式化脚本应该是幂等的——多次运行结果一致。
- 版本控制配合:在 Git 中使用
pre-commit钩子,提交前自动格式化。 - 并行处理:如果文件很多,使用
xargs -P或 GNUparallel可以大幅提速。 - 只格式化变更的文件:结合
git diff --name-only可以只处理改动过的文件,效率更高。
最后:只要你能定义一个明确的“格式化规则”,无论多复杂(正则替换、对齐、重命名列等),都可以写成脚本批量执行,这比手动操作要可靠得多。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播