如何通过终端批量缩进当前目录下的JSON文件?
当然有啦!给你分享几个实用的终端方法,不管是用系统自带的Python工具,还是专门的JSON处理命令行工具,都能快速搞定指定JSON文件的缩进格式化,效果和你说的Sublime里的"Pretty JSON"插件一模一样~
方法一:用Python脚本(无需额外安装依赖)
Python自带的json.tool模块就是个现成的JSON格式化工具,不用额外装包,几乎所有系统都自带Python环境,非常方便。
处理单个文件:
如果不想覆盖原文件,可以输出到新文件:python -m json.tool input.json > formatted_input.json要是想直接原地修改原文件,可以借助临时文件过渡(避免意外损坏原文件):
python -m json.tool input.json > temp.json && mv temp.json input.json批量处理指定的JSON文件:
比如你要处理当前目录下的data1.json、config.json、settings.json这几个文件,可以写个简单的循环:for file in data1.json config.json settings.json; do python -m json.tool "$file" > temp.json && mv temp.json "$file" # 可选:给原文件做个备份 # cp "$file" "$file.bak" done
方法二:用jq命令行工具(更高效的专业工具)
jq是专门为JSON处理设计的命令行工具,处理速度更快,功能也更丰富,唯一需要先安装一下:
Ubuntu/Debian:
sudo apt install jqmacOS:
brew install jq处理单个文件:
同样,输出到新文件:jq . input.json > formatted_input.json原地修改的话,如果你安装了
moreutils工具包(里面的sponge可以避免临时文件的麻烦):jq . input.json | sponge input.json没装
sponge的话还是用临时文件过渡:jq . input.json > temp.json && mv temp.json input.json批量处理指定文件:
同样用循环搞定指定的一组文件:for file in data1.json config.json settings.json; do jq . "$file" > temp.json && mv temp.json "$file" # 可选备份:cp "$file" "$file.bak" done
方法三:写一个可复用的Shell脚本
如果你经常需要做这个操作,可以把逻辑写成一个脚本,方便重复使用:
- 创建一个名为
pretty-json.sh的文件,内容如下:#!/bin/bash # 检查是否传入了文件参数 if [ $# -eq 0 ]; then echo "用法:$0 <json文件1> <json文件2> ..." exit 1 fi # 遍历传入的所有文件 for file in "$@"; do if [ -f "$file" ]; then # 用jq格式化(如果想用Python就换成python -m json.tool "$file" > temp.json) jq . "$file" > temp.json && mv temp.json "$file" echo "已格式化:$file" # 可选备份:cp "$file" "$file.bak" else echo "警告:文件 $file 不存在,跳过" fi done - 给脚本赋予执行权限:
chmod +x pretty-json.sh - 使用的时候直接指定要处理的文件:
./pretty-json.sh data1.json config.json settings.json
这些方法都能快速帮你完成JSON文件的缩进格式化,根据你的环境和需求选就行~
内容的提问来源于stack exchange,提问作者Filipe Freire
相关产品推荐
相关产品推荐

