cp - mac上的父母选项

时间:2012-06-28 13:45:37

标签: macos command-line command-line-arguments

在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,创建任何缺少的中间目录。

6 个答案:

答案 0 :(得分:50)

这也困扰了我很多。 解决方法可能是使用rsync。

rsync -R test/withintest/go.rb test2

cp --parents具有相同的效果,OS X标配rsync。

答案 1 :(得分:15)

您可以在Mac OS X上使用ditto命令:

基本表格

ditto <src-path> <dst-path>

做你想要的。还有更多选项 - 请查看man page

答案 2 :(得分:5)

您可以使用MacPorts安装cp的GNU版本。

安装MacPorts后,您可以安装coreutils软件包:

sudo port install coreutils

然后,您将能够使用GNU版本cp和其他核心实用程序(lsdatecat等),为命令添加前缀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