このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

ディレクトリを再帰的にコピーするには

「cp, mvコマンドとcopy, moveコマンドの微妙な違い:実例とまとめ」と似たような話。Linux/UnixコマンドとDOS/Windowsのコマンドによる再帰的なコピー。

2つのディレクトリ origin/ と target/ があるとします。origin/ にあるファイルを全て、target/ の下に再帰的にコピーするには、次のようにします。「$」はLinux/Unixのプロンプト、「>」はDOS/Windowsのプロンプトだとします。

  • $ cp --recursive origin/* target/
  • >xcopy /y /s origin target\

これはちょっとややこしくて、cp の引数を origin とか origin/ にすると、target/origin/ が出来てしまいます。一方、Windowsコマンドxcopyのときは、origin を origin\ にするとエラーとなります(origin\* はOKで、同じ意味)。コピー先の指定では、お尻の「/」、「\」を気にする必要はありません。

コピーしたフィイルを目視で確認したいなら次のようです。

  • $ cp --verbose --recursive origin/* target/
  • >xcopy /f /y /s origin target\

タイムスタンプが新しいファイルだけをコピーしたいなら:

  • $ cp --update --verbose --recursive origin/* target/
  • >xcopy /d /f /y /s origin target\

--recursive や /s を付けても、空のディレクトリはコピーされません。Windowsでは、/s の代わりに /e を付けると(あるいは /s /e とすると)空のディレクトリもコピー(コピー先に作成)します。

[追記]もとのファイルの属性もできるだけ忠実にコピーしたいなら、xcopy では /K /O、cpでは-pを付けたほうがいいです。[/追記]