Вопрос Что означает «cp: omitting directory»?


Я выпустил следующую команду:

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' 

и так далее...

Почему я получаю эти сообщения?


365
2018-04-18 15:11


происхождения




ответы:


По умолчанию, 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) содержит обзор доступных опций.


477
2018-04-18 15:15



Большое спасибо. Я думал, что * будет иметь дело с этим рекурсивно каким-то образом. Но нет. : D Еще раз спасибо. :) - MEM
@MEM: * расширяется Башем, а не cp, Испытайте это сами, поставив echo  перед вашей командой. Когда он расширяется, он сопоставляет все с предшествующим ...library/Zend/ (файлы и каталоги в нем). - Lekensteyn
Хорошей новостью является то, что omitting directory 'directory' не означает, что он удаляет этот каталог. - Bishwas Mishra
@Lekensteyn Я пытался скопировать содержимое одного пользователя в другой. Так я получил разрешение от пользователя с chmod a+rx ~/ после того, как я попытался скопировать cp /home/2110/* /home/2111/ он выдает ошибку, которая запрещает разрешение на использование. где я был неправ. извините за комментарий, потому что я не могу задать повторяющиеся вопросы. я надеюсь на быстрый ответ :) - jasinth premkumar
@jasinthpremkumar Файлы в /home/2110 принадлежат пользователю 2110, тогда как файлы в /home/2111 должны принадлежать 2111. Чтобы установить владельца, используйте что-то вроде sudo chown -R 2111 /home/2111, - Lekensteyn


Сообщение означает, что cp не скопировал перечисленные каталоги. Это поведение по умолчанию для cp - только файлы копируются обычно, независимо от того, указываете ли вы их явно или используете *, Если вы хотите скопировать каталоги, используйте -r который означает «рекурсивный».


34
2018-04-18 15:15





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

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

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

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

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

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


14
2017-10-04 07:02





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

cp dir1 copy_of_dir1

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

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

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


2
2017-07-03 07:47





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


1
2017-07-24 08:32





Предположим, у вас есть два каталога «Tag» и «Test»,

Если вы хотите скопировать каталог «Tag» в команду «Test» использовать команду

$ : cp -r Tag Test (case sensitive)

В основном проблема будет решена с помощью выше кода, если нет, и вы получите сообщение ниже

cp: omitting directory `Tag' 
cp: omitting directory `Test'

затем добавьте некоторые файлы в каталог «Tag», а затем скопируйте их в «Test». На самом деле у меня есть одна и та же проблема, но она решена так, как я сказал во-вторых.


-1
2017-07-03 07:14