我正在使用 jsonlint 对目录中的一堆文件进行 lint(递归)。我写了以下命令:
find ./config/pages -name '*.json' -print0 | xargs -0I % sh -c 'echo Linting: %; jsonlint -V ./config/schema.json -q %;'
它适用于大多数文件,但有些文件我收到以下错误:
Linting: ./LONG_FILE_NAME.json
fs.js:500
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory '%'
对于长文件名,它似乎失败了。有没有办法来解决这个问题?谢谢。
编辑1: 发现问题。
-I replstr
为每个输入行执行实用程序,用整行输入替换实用程序的一个或多个 replstr 实例(如果没有指定 -R 标志,则最多替换 5 个)参数。替换完成后,生成的参数将不允许超过 255 个字节;这是通过将尽可能多的包含 replstr 的参数连接到实用程序的构造参数来实现的,最多 255 个字节。255 字节的限制不适用于不包含 replstr 的实用程序参数,此外,不会对实用程序本身进行替换。暗示-x。
编辑 2: 部分解决方案。支持比以前更长的文件名,但仍然没有我需要的那么长。
find ./config/pages -name '*.json' -print0 | xargs -0I % sh -c 'file=%; echo Linting: $file; jsonlint -V ./config/schema.json -q $file;'