【发布时间】:2015-06-09 16:47:21
【问题描述】:
我正在尝试cp OSX 桌面上适合五位数模式的一些文件。它有效,但我不明白为什么 -n 选项被忽略。如果文件已经在目的地,我不想覆盖它。
find ./prefix* -name '[0-9][0-9][0-9][0-9][0-9]' -maxdepth 5 -exec cp -nr {} ./dest \;
所有内容都被复制,即使一个目录已经在dest 中。如何强制不覆盖?超级用户上的This solution 表示我可以简单地将dest 中所有内容的权限更改为只读。但我觉得我的实现cp 与man 页面上的行为不一致一定是有原因的,因此应该有更好的方法来解决这个问题。
另外,被覆盖的文件的权限是rwxr-xr-x(或者0755,如果你喜欢八进制)。
【问题讨论】:
-
您确定
-n适用于目录吗?手册页只讨论文件。 -
@AndreasGrapentin 叹息。好点子。
-
@AndreasGrapentin 关于如何使其与目录一起工作的任何想法?
-
不幸的是没有,否则我会发布答案。但也许你可以让它与 rsync 一起工作?如果没有,您可能必须用 python 或类似的东西编写一个小程序,这正是您想要的。
-
我自己会(或者更确切地说,做)走
rsync路线。
标签: linux macos bash shell unix