Skylar
#1
我发出了以下命令:
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
switch这意味着"递归"。
当你复制一个目录,如:
cp dir1 copy_of_dir1
你只是在复制 dir1
它本身而不是它里面的文件,所以最后你会得到一个新的目录结构,而这个结构不存在。
换句话说,在它被复制后,它会说我的内容是 file1
, file2
等;但是这些文件没有被复制,因此不存在于其中。
所以要解决这个可能出现的问题 cp
默认情况下,除非指定,否则不会复制目录并跳过它们 -r
也递归复制所有文件的选项。
它说的原因 omitting directory
是因为 cp
我所知道的所有复制实用程序都在开始复制文件之前创建要复制的文件和子目录列表。 当 --recursive
选项丢失,子目录被从这个列表中删除. 因此,省略是指从复制列表中删除,而不是从源媒体中删除。 我相信这解决了消息的含义。
该 cp 命令用于复制文件和目录,而不是嵌套目录,如果你想复制嵌套目录,那么你可以添加 -r 之后,其中-r表示递归。
您可以遵循的语法(以root身份运行):
cp -r /source/dir/* /destination/
或
cp --recursive /source/dir/* /destination/
假设你有两个目录'Tag'&'Test'
如果要将'Tag'目录复制到'Test'目录使用命令
$ : cp -r Tag Test (case sensitive)
大多数问题将用上面的代码解决,如果没有,你会得到下面的消息,如
cp: omitting directory `Tag' cp: omitting directory `Test'
然后在'Tag'目录中添加一些文件,然后将它们复制到'Test'。 其实我有同样的问题,但解决像我说的第二。