0

ディレクトリのリストにあるすべてのファイルをコピーして、出力ディレクトリに貼り付けようとしています。問題は、*を使用するたびに、その名前のファイルまたはディレクトリが存在しないことを示す出力です。特定のエラー出力は次のとおりです。

cp: cannot stat `tagbox/images/*': No such file or directory
cp: cannot stat `votebox/images/*': No such file or directory

*の代わりに特定のファイルの名前を入力すると、機能します。

これが私のCakefileです:

fs = require 'fs'

util = require 'util'
{spawn} = require 'child_process'

outputImageFolder = 'static'
imageSrcFolders = [
'tagbox/images/*'
'votebox/images/*'
]

task 'cpimgs', 'Copy all images from the respective images folders in tagbox, votebox, and omnipost into static folder', ->
  for imgSrcFolder in imageSrcFolders  
    cp = spawn 'cp', [imgSrcFolder, outputImageFolder]
    cp.stderr.on 'data', (data) ->
      process.stderr.write data.toString()
    cp.stdout.on 'data', (data) ->
      util.log data.toString()
4

1 に答える 1

2

*おそらくそれがあなたのシェルであなたのために働くので、あなたはキャラクターを使っています。*複数のパスに一致するように展開するその他のワイルドカード文字の使用は「グロブ」と呼ばれ、シェルは自動的にそれを行いますが、node / javascript/coffeescriptを含む他のほとんどのプログラムはデフォルトではそれを行いません。また、cpあなたが発見しているように、バイナリ自体はグロブを行いません。シェルはグロブを実行し、一致するファイル/ディレクトリのリストを引数としてに渡しますcp。ノードモジュールnode-globを調べてグロブを実行し、一致するファイル/ディレクトリのリストを返します。これをに渡すことができます。cp必要に応じて引数として。このタイプの機能が組み込まれているファイルシステムモジュールを使用することもできることに注意してください。ただし、ここに記載されているように、非同期コードをCakefileに直接配置すると問題が発生する可能性があることに注意してください

于 2012-03-21T15:38:36.773 に答える