在Linux上,我有一个--parents命令可用于cp命令,所以我可以
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,创建任何缺少的中间目录。
答案 0 :(得分:50)
这也困扰了我很多。 解决方法可能是使用rsync。
rsync -R test/withintest/go.rb test2
与cp --parents
具有相同的效果,OS X标配rsync。
答案 1 :(得分:15)
答案 2 :(得分:5)
您可以使用MacPorts安装cp
的GNU版本。
安装MacPorts后,您可以安装coreutils软件包:
sudo port install coreutils
然后,您将能够使用GNU版本cp
和其他核心实用程序(ls
,date
,cat
等),为命令添加前缀g
:
gcp --parents test/withintest/go.rb test2
如果您希望默认使用这些GNU版本,可以添加GNU bin更新路径。将以下内容添加到您的~/.bash_profile
:
export PATH="/opt/local/libexec/gnubin:$PATH"
答案 3 :(得分:2)
自制方法:
安装coreutils
brew install coreutils
使用带有GNU
g前缀的命令
gcp --parents test/withintest/go.rb test2
答案 4 :(得分:1)
我不会用GNU cp替换mac cp。我也不会使用同上,因为它不是跨平台的。而是使用跨平台工具,例如rsync:
rsync <srcDir/srcFile> <dst>
结果:dst / srcDir / srcFile
答案 5 :(得分:0)
我使用了rsync,而我所做的是:
rsync -R dir/**/file.json destination