2016-11-11 15 views
0

非常に単純な質問ですが、迷惑です。あるフォルダ内のすべてのファイルをシェルスクリプト内の別のフォルダにコピーしたい。シェルスクリプト:ワイルドカード(*)を使用してファイルをあるフォルダから別のフォルダにコピーする

#!/bin/sh 
cp data/* /tmp/data 

しかし、ここでのように、stackoverflowの上のさまざまな記事を読むerror: zsh:1: no matches found: data/*

を得た:このように私はデータフォルダにファイルが含まれていることを確認でき

cp "data"/* /tmp/data 
Error: zsh:1: no matches found: data/* 
cp -r data /tmp/data 
Error cp: cannot stat `data': No such file or directory 

、と私は」:Copying files with wildcard (*) to a folder in a bash script - why isn't it working? を私が試してみました親ディレクトリのデータフォルダ内のm。スクリプト内でls dataを実行すると、その内容が正しく表示されます。

助けてもらえますか?私はzshを使用しています。

+0

スクリプトを実行するときの現在の作業ディレクトリは何ですか? (つまり、 'cp'を呼び出す直前に' pwd'を呼び出した場合の出力は何ですか? – chepner

+0

スクリプトをどのように実行していますか?1行目で 'data/*'に関するzshエラーが発生しているのに驚いています –

+0

@chepner現在のディレクトリはデータの親ディレクトリですスクリプト内のcpコマンドの後に 'ls data'を追加したとしたように、それはフォルダを出力します内容は正しくありません – ruyuan

答えて

1

探しているコマンドがcp -r data /tmp/である可能性があります。 にdataディレクトリが作成されます。

+0

はい、宛先修正に同意します。しかし、ここでの問題は、コマンドが 'data'フォルダをまったく認識できないことです。 – ruyuan

+0

'cp'ユーティリティの歴史的なバージョンには' -r'オプションがありました。この実装はそのオプションをサポートしています。しかし、特別なファイル、シンボリックリンク、またはFIFOを正しくコピーしないので、その使用は強く推奨されません。 –

+0

@ruyuanこれは、シェルが不平を言っている "data"ディレクトリが/ tmp/dataディレクトリであるためです。まだ存在しないか、コマンドを実行している作業ディレクトリが同じではないためですディレクトリを「データ」として指定します。ここでは、完全なパスを指定するか、コピーする前にディレクトリに変更する必要があります。 – CodeWarrior

関連する問題