Что означает "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 переключатель, который означает "рекурсивный".

Здесь есть пара вещей, которые нужно проверить:

  1. Не используйте sudo. Вам это не нужно, у вас уже есть разрешения на запись материалов в ваш собственный домашний каталог.

  2. Вы можете легко просматривать скрытые файлы и каталоги в графическом файловом менеджере, выбрав в меню пункт Просмотр/Показать скрытые файлы. Или нажав Ctrl - H.

  3. Вам нужно использовать -R вариант в cp команда для копирования каталога и его содержимого.

  4. /home - это не ваш домашний каталог. /home/имя пользователя есть. Так что вы, вероятно, пытаетесь скопировать не из того места.

  5. Оболочка чувствительна к регистру, поэтому ~/downloads и ~/Downloads - это две разные вещи.

Когда вы копируете каталог, подобный:

cp dir1 copy_of_dir1

Вы только и в точности копируете dir1 сам по себе, а не файлы внутри него, так что в конце вы получите новую структуру каталогов, в то время как структура не существует.

Другими словами, после того, как он будет скопирован, он скажет, что мое содержимое file1, file2, и т.д.; Однако эти файлы не были скопированы и, следовательно, не существуют в нем.

Итак, чтобы исправить эту проблему, которая может возникнуть cp по умолчанию не копирует каталоги и пропускает их, если вы не укажете -r опция, которая также копирует все файлы рекурсивно.

Причина, по которой в нем говорится omitting directory это потому, что cp и все известные мне утилиты копирования создают список файлов и подкаталогов, которые необходимо скопировать, прежде чем начинать копировать файлы. Когда --recursive параметры отсутствуют, подкаталоги удаляются из этого списка. Таким образом, пропуск относится к удалению из списка копирования, а не с вашего исходного носителя. Я полагаю, что это раскрывает смысл послания.

То КП команда используется для копирования файлов и каталогов, а не вложенных каталогов, если вы хотите скопировать вложенные каталоги, вы можете добавить - р после этого, где -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'. На самом деле у меня была такая же проблема, но решенная так, как я сказал во-вторых.