2017-06-29 433 views
0

我正在上的Git的bash下面的命令(窗口)爲什麼我的bash的模式匹配不正常時,通過EXEC的NodeJS「管道」的工作?

paste --delimiter=\\n --serial src/libs/**/*[^.spec].js > test.js 

與禁用了javascript:

globstar on 
extglob on 

這成功地concats全部來自SRC /庫遞歸JS文件上,除了所有* .spec.js文件從終端執行時。

然而,當我通過咕嚕殼(https://github.com/sindresorhus/grunt-shell)運行此命令時,它的工作原理也不過:[^的.spec]被忽略。意思是我的所有* .spec.js文件也都進入test.js。

回答

1

使用extglob(和globstar)以下語法是正確的其他[^ .. ]是否定字符集。

paste --delimiter=\\n --serial src/libs/**/!(*.spec).js > test.js 

否則,它可以找到做

find src/libs -name '*.js' ! -name '*.spec.js' -exec paste --delimiter='\n' --serial {} + > test.js 

是否與

find src/libs ! -name '*.spec.js' -name '*.js' -exec cat {} + > test.js 
+0

我想最後一行的任何區別,按預期工作,謝謝! – rgruenke

+0

有一個微妙的dfference當文件的最後一行沒有結束行的文字'cat'不會增加,而'paste'確實 –

+0

啊對,沒錯,嘗試第二個(它是安全的,因爲這是部分) - 轉義 - delimiter ='\ n'爲--delimiter ='\\ n'爲我工作.. – rgruenke

相關問題