Linuxでは、cpコマンドで--parentsオプションを使用できるので、
cp --parents test/withintest/go.rb test2
http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html
Macでは、このオプションは利用できません。 Macでこれを行う方法はありますか?このオプションが利用できないのはなぜですか?
PS。 --parentsの目的は次のとおりです。
‘--parents’ターゲットディレクトリにスラッシュとソースファイルの指定した名前を追加して、各宛先ファイルの名前を形成します。
Cpに与える最後の引数は、既存のディレクトリの名前でなければなりません。
たとえば、次のコマンド:
cp --parents a/b/c existing_dir
ファイルa/b/cをexisting_dir/a/b/cにコピーし、不足している中間ディレクトリを作成します。
Mac OS Xではditto
コマンドを使用できます。
基本形
ditto <src-path> <dst-path>
あなたがしたいことをします。さらに多くのオプションがあります- man page をチェックしてください。
これも私をかなり悩ませました。これの回避策は、rsyncを使用することです。
rsync -R test/withintest/go.rb test2
cp --parents
と同じ効果があり、OS Xにはrsyncが標準で付属しています。
MacPorts を使用して、GNU cp
のバージョンをインストールできます。
MacPortsをインストールしたら、coreutilsパッケージをインストールできます。
Sudo port install coreutils
その後、GNU version cp
およびその他のコアユーティリティ(ls
、date
、cat
など)、コマンドの前にg
を付けます。
gcp --parents test/withintest/go.rb test2
これらのGNUバージョンをデフォルトで使用したい場合は、GNU bin update pathを追加できます。以下を~/.bash_profile
に追加してください。
export PATH="/opt/local/libexec/gnubin:$PATH"
MacのcpをGNU cpで置き換えません。クロスプラットフォームではないため、dittoも使用しません。代わりに、rsyncなどのクロスプラットフォームツールを使用します。
rsync <srcDir/srcFile> <dst>
結果:dst/srcDir/srcFile
自作の方法:
インストールcoreutils
brew install coreutils
GNU
g-接頭辞付きコマンドを使用する
gcp --parents test/withintest/go.rb test2