Что означает "каталог 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'
и так далее...
Почему я получаю эти сообщения?
6 ответов
По умолчанию, 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.
Вам нужно использовать
-R
вариант вcp
Команда для копирования каталога и его содержимого./ home не ваш домашний каталог. / home / имя пользователя Таким образом, вы, вероятно, пытаетесь скопировать из неправильного места.
Оболочка чувствительна к регистру, поэтому ~/downloads и ~/Downloads - это две разные вещи.
Когда вы копируете каталог, как:
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". На самом деле, у меня та же проблема, но она решена, как я сказал во-вторых.