以递归方式处理unix目录中的文件

时间:2016-11-09 03:21:39

标签: shell unix recursion scripting xargs

我已经制作了一个脚本(convert.sh)来转换漂亮的打印格式的json文件。例如,

convert.sh source.json

它将替换source.json文件,用漂亮的打印格式覆盖自己。

convert.sh的内容

#!/bin/bash
INFILE=$1
python -m json.tool $INFILE > $INFILE.tmp
mv $INFILE.tmp $INFILE

它适用于一个文件。但是,我想处理目录下的所有文件。 e.g。

dir1\file1.json
dir1\file2.json
dir1\subdir\abc.json
dir1\subdir2\def.json
...

任何单行命令都可以执行此操作?我试过了

find dir1 | grep .json | xargs convert.sh

但没有成功。请帮忙。非常感谢!

1 个答案:

答案 0 :(得分:2)

使用find来(1)搜索匹配某个模式的文件(2)在每个找到的文件上启动脚本:

find dir1 -name "*.json" -exec convert.sh {} \;