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