我有很多HTML文件在一个目录和子目录。我可以通过命令行执行js-beautify
命令,并希望将其递归地应用于所有这些文件。
我已经尝试
find . -name“.html”-type f| js-beauty-r and
js-beauty-r| find . -name“.html”-type f
但它不起作用然而,如果我给予类似js-beautify -r myfile.html
或js-beautify -r *.html
的东西,JS-beauty确实可以工作(如果所有文件都在一个目录中,而不是在子目录中)
有谁能告诉我应该如何管道这两个命令?
7条答案
按热度按时间t1qtbnec1#
然而,JS美化确实工作...如果所有文件都在一个目录中,但不在子目录中
您已经提到,如果所有输入文件都在同一个目录中,JS-beauty就可以工作。您的命令可能不起作用,因为您传递了来自
find
的所有结果,其中可能包括来自不同目录的输入文件。如前所述,你可以使用
-exec
:较新版本的GNU
find
可能使用以下语法:gab6jxml2#
我遇到过类似的问题,并找到了一个简单的跨平台解决方案,使用glob-run:
如果js-beautiful supported globs itself就好了。
nmpmafwu3#
find+xargs是正确的方法。它比用-exec查找要快。
如果出于某种原因,你的文件名中有空格,你会想这样做。
最后,如果出于某种奇怪的原因,js-beauty不能处理多个参数,那么你需要告诉xargs一次只传入一个参数。这与使用-exec选项没有太大区别,但在IMO中更好,因为它更一致。
注意,您可以将
-print0
和xargs -0
选项与xargs -n 1
组合使用合并。编辑:正如T. J所指出的。Crowder,shell不会在双引号中显示通配符。这对我来说是新闻,也许有一些古老的环境在那里,这是不正确的,希望,你永远不会被迫在它的工作。
dfddblmv4#
1)将这些依赖项添加到项目中
2)创建
scripts/format.js
3)将
format
脚本添加到package.json
4)在项目中,运行
nwlls2ji5#
它看起来像file globs are supported,因为v1.8.9(2018年12月发布)。举例来说:
r7s23pms6#
结合Bill的上述智慧和these answers on regexp matching,这是我的项目的实际解决方案:
find . -regextype egrep -regex './(src|测试|app)/.*.(js| sass| html)' -print0| xargs-0./node_modules/.bin/js-beauty-r
-r
)./node_modules/.bin
)当在package.json脚本中使用时,
./node_modules/.bin
自动位于路径中,\.*
需要转义为\\.*
,因此:→
bksxznpy7#
扩展@devnull的答案,对于macos用户(只是为了更容易复制粘贴),这里是你需要添加到
.bash_profile
的内容:然后只需运行
source ~/.bash_profile
,然后按照要求js-beautify-alljs
或js-beautify-alljsx
或js-beautify-allts
或js-beautify-alltsx
或js-beautify-allhtml
或js-beautify-allcss
或js-beautify-allscss
或js-beautify-alljson
或所有8种格式:
js-beautify-all