我发出了以下命令:
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'
等等...
为什么我会收到这些消息?
默认情况下,
cp
仅复制目录中的直接文件,而不复制目录中的子目录。该消息cp: omitting directory 'directory'
警告您提到的目录没有被复制。为此,请指定
-r
(or--recursive
) 选项:手册页(命令:)包含可用选项的
man cp
概述。该消息表示
cp
尚未复制列出的目录。这是默认行为cp
- 仅正常复制文件,无论您是明确指定它们还是使用*
. 如果要复制目录,请使用-r
表示“递归”的开关。这里有几件事需要检查:
不要使用
sudo
. 您不需要它,您已经有权在自己的主目录中写入内容。通过从菜单中选择查看/显示隐藏文件,您可以在图形文件管理器中轻松查看隐藏文件和目录。或按Ctrl- H。
您需要使用命令中的
-R
选项cp
来复制目录及其内容。/home 不是您的主目录。/home/username 是。所以你可能试图从错误的地方复制。
shell 区分大小写,所以 ~/downloads 和 ~/Downloads 是两个不同的东西。
当您复制如下目录时:
您只是在复制
dir1
自身而不是其中的文件,因此最后您将得到一个新的目录结构,而该结构不存在。换句话说,在它被复制之后,它会说我的内容是
file1
,,file2
等等;但是,这些文件尚未被复制,因此不存在于其中。因此,要解决默认情况下可能出现
cp
的这个问题,不会复制目录并跳过它们,除非您指定-r
递归复制所有文件的选项。它说的原因
omitting directory
是因为cp
我知道的所有复制实用程序都会在开始复制文件之前创建要复制的文件和子目录的列表。缺少选项时--recursive
,子目录会从该列表中删除。因此,省略是指从副本列表中删除,而不是从源媒体中删除。我相信这解决了信息的含义。cp命令用于复制文件和目录,而不是嵌套目录,如果要复制嵌套目录,则可以在其后添加-r,其中 -r 表示递归。
您可以遵循的语法(以 root 身份运行):
或者
假设您有两个目录“标签”和“测试”
如果要将“标签”目录复制到“测试”目录,请使用命令
如果没有,大多数问题将通过上面的代码解决,并且您会收到以下消息
然后在 'Tag' 目录中添加一些文件,然后将它们复制到 'Test' 。其实我有同样的问题,但像我第二次说的那样解决了。