しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

一つのファイルを複数のフォルダにコピーするには

お世話になっております。
一つの illustrator の .eps ファイルを 50 個ほどのフォルダひとつひとつに手動でコピーする機会が多く、自動でなんとかならないかと思っています。
思いついた事をやってみたのですが、二つほど問題がありました。
コピーしたいフォルダは、「 aaa_1 」「 aaa_2 」「 aaa_3 」…というように、必ず先頭に同じ文字がつきます。
それで、試しにコピー先のフォルダ「 aaa_1 」〜「 aaa_5 」の5つを作り、ターミナルで
cp /Volumes/PantherData/works/illustrator.eps /Volumes/PantherData/works/aaa/a*
としてみたのですが、最後の「 aaa_5 」にしかコピーできないのですが、なぜでしょうか。(aaa* 、a? でもダメでした)
また、このやり方でコピーしたファイルは、NSPostScriptPboardType となり、アイコンも「プレビュー」に変わり、イラストレーターで問題なく開く事はできますが、そのまま QuarkXpress に画像取り込みすると、ポストスクリプト画像となってしまい、画像が出ません。
eps ファイルとして、そのままコピーする方法はあるのでしょうか。
# バージョンは 10.3.9 です。

投稿日 2007/02/07 17:25

返信: 33

2007/02/07 18:13 Community User への返信

>最後の「 aaa_5 」にしかコピーできないのですが、なぜでしょうか
当然です。cpコマンドの使い方を理解されていませんね。もういちどmanをちゃんと読み直された方がよろしいでしょう。
同じファイルを複数のフォルダにコピーしたいなら、ループ化しないとダメです。
(例)
for ff in aaa_[1-5]; do cp /Volumes/PantherData/works/illustrator.eps /Volumes/PantherData/works/aaa/$ff; done

2007/02/07 18:18 Community User への返信

>最後の「 aaa_5 」にしかコピーできないのですが、なぜでしょうか

当然です。shellのワイルドカード展開をもう一度良く考えてみてください。 (コマンドを実行した時、エラーが出たはずですが。)

同じファイルを複数のフォルダにコピーしたいなら、ループ化しないとダメです。

(例)
cd /Volumes/PantherData/works/aaa/; for ff in aaa_[1-5]; do cp /Volumes/PantherData/works/illustrator.eps $ff; done
後半は、10.3のcpがリソースをコピーしてくれないためでしょう。(10.4なら問題ない。)Developer Toolsに入っているCpMacコマンドを使うと大丈夫だと思いますが。

2007/02/08 05:44 Community User への返信

Y. Kawabe 様、ありがとうございます。
>shellのワイルドカード展開を
ワイルドカードは、ソースにしか付けられないんですね。
コマンドを実行した時、エラーは出ませんでした。
試しに、「illustrator_1.eps」〜「illustrator_5.eps」を作り、「ill*」として、一つのフォルダに全部コピーする事ができました。
「*」や「?」は、フォルダにも適用できるとの事だったので、勘違いしていました。
書いてくださった例を、そのまま置き換えて実行した所、うまくいきました。
for xxx in yyy … do command … done というのは、応用して他でも便利に使わせていただけそうです。
この機種(PMG4)のインストールディスク(10.3.2)に Developer は入っていないようなので、残念ですが eps ファイルはあきらめます。
ありがとうございました。

2007/02/08 05:58 Community User への返信

>ワイルドカードは、ソースにしか付けられないんですね。
違います。「*」や「?」などのワイルドカードは、shellが展開し、その結果がコマンドに渡されます。shellはどの引数がどういう意味なのかは知りません。(それを知っているのは実行されるコマンドのほうだけです。)
例えば、aa1, aa2, aa3というディレクトリとbbbというファイルがあったとして、「cp bbb aa*」とshellに渡せば、shellはこれを「cp bbb aa1 aa2 aa3」と展開します。cpコマンドは引数の最後がコピー先でそれ以外はコピー元と解釈しますから、bbb, aa1, aa2の3つをaa3にコピーしようとしてしまいます。aa1,aa2はディレクトリですから、この2つはコピーできない、というエラーとともに、bbbだけがaa3にコピーされます。

2007/02/08 06:24 Community User への返信

>例えば、aa1, aa2, aa3というディレクトリと…
ものすごくよくわかりました。だから最後のフォルダにしかコピーされなかったんだ…。シェルもコマンドも混ぜこぜに考えていたようです。
基礎のない所に家は建ちませんね。一から勉強します。ありがとうございました。

2007/02/08 06:39 Community User への返信

> インストールディスク(10.3.2)に Developer は入っていないようなので、
Mac OS X 10.3.2がリテイル版なら、Developer ToolsのCD-ROMが入っているはずですし、マシンに付属のものでも入ってます。ただし、マシンに付属の場合は、インストールCD-ROM等から直接インストールするような形ではありません。内蔵HDDのアプリケーションフォルダーの中のインストーラ(だったと思う)フォルダーの中に、Developer Toolsのインストーラがあったと思います。
無いようでしたら、ソフトウェアリストアでインストーラをリストアできます。
#ADCに登録すると、Developer Toolsの最新版等が無料でダウンロードできますので、そちらを利用した方が良いかとは思います。

2007/02/08 16:53 Community User への返信

NO9 様、ありがとうございます。
>内蔵HDDのアプリケーションフォルダーの中のインストーラ…
ありました。OSX と一緒にインストーラも入っていたんですね。
さっそく、CpMac を使ってみたのですが、
CpMac /Volumes/PantherData/works/illustrator.eps /Volumes/PantherData/works/aaa
と、普通にコピーしても、
-bash: CpMac: command not found となります。
man CpMac では、ちゃんと出てくるのですが…。
Developer.mpkg をインストールしただけでは、だめだったでしょうか。

2007/02/08 17:05 Community User への返信

CpMacは/Developer/Tools/にインストールされます。ここにはパス(path)は通っていませんから、自分でパスを通すか、フルパスで/Developer/Tools/CpMacとしなければなりません。
(参考)
MacWiki UNIX入門

2007/02/08 17:53 Community User への返信

Y. Kawabe 様、ありがとうございます。
フルパスで、Y. Kawabe さんの例で、eps ファイルとしてコピーできました。
MacWiki UNIX入門は、OSX の固有コマンドの解説があるのがよいですね。今まで、Unix や Linux のサイトで調べていました。ditto でも同じ事ができることがわかりました。将来、CpMac が廃止される予定なんですね。
自分でパスを通すのは、まだ理解するのに時間がかかりそうです。ざっと見た感じでは、とても難しそうですが、やらないと後々面倒な気がするので、がんばります。
ありがとうございました。

2007/02/08 19:41 Community User への返信

 余談:
>>将来、CpMac が廃止される予定なんですね。
 10.4からcpコマンドに、その機能は吸収されました。

2007/02/08 19:58 Community User への返信

> ditto でも同じ事ができることがわかりました。
dittoで有名なのはCabon Copy Clonerがあります。Jaguar時代にはお世話になりましたが現在はasrのほうが便利です。# 復元はasrを使います。 :-)

2007/02/09 03:31 Community User への返信

木藤 様、ぴっぴ様、ありがとうございます。
>10.4からcpコマンドに、その機能は吸収されました
10.4 の方の Developer の方にも一応 CpMac は入っていますが、Y.Kawabe さんの msg # 1 は、そういうことなんですね。
>dittoで有名なのはCabon Copy Clonerが…
以前、ファイル名を一括で変更する「GoodRenamer」というフリーウエアを使っていましたが、Y.Kawabe さんの例のように、繰り返しの方法が裏で動いているのかなとか、考えるのが楽しくなりました。

2007/02/14 15:40 Community User への返信

パスを通すには ~/.bash_profile に書き込みせよとの事で、ホームのどこに .bash_profile があるのか探しても全くわかりませんでしたが、Tiger の方の HAL さんの書き込みを拝見して、自分で .bash_profile を作るのだということが、やっとわかりました。無事パスが通ったようです。

2007/02/14 16:12 Community User への返信

この他にも.bashrc, .bash_history, .bash_logoutがあります。:-)

2007/02/16 08:54 Community User への返信

~/.bash_history は元からあるのですが、~/.bashrc と ~/.bash_logout は見当たりませんが、これも自分で作るんでしょうか。
# Level 4 おめでとうございます。今後ともよろしくお願いいたします。実はこれを書きたかっただけだったりします。

一つのファイルを複数のフォルダにコピーするには

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple ID を使ってご参加ください。