递归格式化多个json文件

jay*_*100 6 bash formatting side-effects

这是一个关于在 bash 脚本中最小化副作用的理论问题。

我最近使用了一种简单的机制来格式化一堆 json 文件,在嵌套的目录结构中......

for f in `find ./ -name *json`; do echo $f ; python -mjson.tool $f > /tmp/1 && cp /tmp/1 $f ; done.   
Run Code Online (Sandbox Code Playgroud)

机制很简单

  • 使用 python 的 mjson.tool格式化每个文件,
  • 将其写入tmp位置,以及
  • 然后重写回原位。

有没有办法做到这一点,它更优雅,即副作用最小?我假设 bash 专家有更好的方法来做这种事情。

小智 5

Unix 工具在流的基础上工作——它们不会一次将文件的所有内容存储在内存中。因此,您必须使用中间位置,因为您将覆盖当前正在读取的文件。

您可能会认为您的代码段不具备容错能力。如果你犯了一个错误,你就会覆盖你所有的数据。您应该将输出存储在新位置,验证,然后移动以覆盖。:)