我发出了以下命令:

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/


执行此操作时,我开始收到以下消息:

cp: omitting directory `Tag' 
cp: omitting directory `Test' 
cp: omitting directory `Text' 
cp: omitting directory `TimeSync' 
cp: omitting directory `Tool' 
cp: omitting directory `Translate' 
cp: omitting directory `Uri' 
cp: omitting directory `Validate' 


等等...

为什么会收到这些消息?

#1 楼

默认情况下,cp仅复制目录中的直接文件,而不复制目录中的子目录。消息cp: omitting directory 'directory'警告您未复制提到的目录。

为此,请指定-r(或--recursive)选项:

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/


手册页(命令:man cp)包含可用选项的概述。

评论


非常感谢。我认为*将以某种方式递归处理它。但不是。 :D再次感谢。 :)

– MEM
2011年4月18日在15:20

@MEM:*由Bash而不是cp扩展。通过将echo放在命令前面来自己对其进行测试。展开后,它将与前面的... library / Zend /(其中的文件和目录)相匹配。

– Lekensteyn
2011年4月18日在15:26

好消息是,省略目录“目录”并不意味着它正在删除该目录。

–比什瓦斯·米什拉
18年2月14日在8:43

@Lekensteyn我试图将一个用户的内容复制到另一个用户。因此,我尝试使用cp / home / 2110 / * / home / 2111 /进行复制后,我从chmod a + rx〜/获得了用户的许可,它会产生错误,指出没有权限 。我错了。很抱歉发表评论,因为我不能问重复的问题。我希望快速回复:)

–茉莉花
18-2-16在13:58



@jasinthpremkumar / home / 2110中的文件由用户2110拥有,而/ home / 2111中的文件应由2111拥有。要设置所有者,请使用sudo chown -R 2111 / home / 2111之类的东西。

– Lekensteyn
18-2-16在15:42

#2 楼

该消息表示cp尚未复制列出的目录。这是cp的默认行为-仅复制文件,无论您是显式指定文件还是使用*。如果要复制目录,请使用-r开关,这意味着“递归”。

#3 楼

这里需要检查的几件事:


不要使用sudo。您不需要它,您已经具有在自己的主目录中写入内容的权限。
通过从菜单中选择“查看/显示隐藏的文件”,可以轻松地在图形文件管理器中查看隐藏的文件和目录。或按Ctrl-H。
您需要在-R命令中使用cp选项来复制目录及其内容。
/ home不是您的主目录。 / home /用户名是。因此,您可能要尝试从错误的位置进行复制。
Shell区分大小写,因此〜/ downloads和〜/ Downloads是两个不同的东西。


#4 楼

当您复制目录时,例如:

cp dir1 copy_of_dir1


,您只是在复制dir1本身而不是其中的文件,因此最终您将最终复制具有新的目录结构,而该结构不存在。

换句话说,复制后将说我的内容是file1file2等;但是,这些文件尚未被复制,因此不存在。

因此,要修复默认情况下可能会出现的此问题,除非您指定cp选项进行复制,否则不会复制目录并跳过它们所有文件也是递归的。

#5 楼

之所以说omitting directory,是因为cp和我所知道的所有复制实用程序都会在开始复制文件之前创建要复制的文件和子目录的列表。当缺少--recursive选项时,子目录会从该列表中移出。因此,省略是指从副本列表中删除,而不是从您的源媒体中删除。我相信这可以解决消息的含义。

#6 楼

cp命令用于复制文件和目录,而不是嵌套目录。
如果要复制嵌套目录,则可以在其后添加-r,其中-r表示递归。

您可以遵循的语法(以root用户身份运行):

cp -r /source/dir/* /destination/ 




cp --recursive /source/dir/* /destination/


#7 楼

假设您有两个目录“标记”和“测试”

如果要将“标记”目录复制到“测试”目录,请使用命令

$ : cp -r Tag Test (case sensitive)


如果不是这样,大多数问题都可以通过上述代码解决,并且出现以下消息,如

cp: omitting directory `Tag' 
cp: omitting directory `Test'


,然后在“ Tag”目录中添加一些文件,然后将其复制到'测试'。实际上,我有同样的问题,但解决了,就像我第二次说的那样。