У меня есть проекты Eclipse и файл ".project", структура каталогов выглядит так:myProject/.project
'. Я хочу скопировать эти файлы .project в другой каталог, но хочу, чтобы имя включающего каталога было сохранено.
Скажем, у меня естьa/myProject/.project
', Я хочу скопировать'myProject/.project
'к'b
', так и будет'b/myProject/.project
', но 'b/myProject
'не существует. Когда я пытаюсь:
cp -r ./myProject/.project ../b
он копирует только сам файл '.project', без каталога 'myProject'. Пожалуйста, порекомендуйте.
Вам нужен переключатель --parents
, например:
jim@prometheus:~$ cp --parents test/1/.moo test2/
jim@prometheus:~$ ls -la test2/
total 42
drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 .
drwxr-xr-x 356 jim jim 43136 2010-09-14 09:32 ..
drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 test
jim@prometheus:~$ ls -la test2/test/1/.moo
-rw-r--r-- 1 jim jim 0 2010-09-14 09:32 test2/test/1/.moo
Вы также можете использовать rsync -R
, который работает на OSX, где cp --parents
недоступен.
Использовать tar
с чем-то вроде:
mkdir b; tar cpf - myProject/ | tar xpf - -C b/
(Не тестировалось. Сначала испытайте его или попробуйте в сценарии с макетом.)
Первое использование mkdir -p
для создания целевой папки с рекурсивным созданием родительского пути. Затем скопируйте содержимое в папку назначения:
mkdir -p b/myProject/.project
cp -r a/myProject/.project/file b/myProject/.project
cp -P a/myProject/.project b
Видеть man cp
Чтобы получить больше информации.
Я использую cpio в сочетании с find. Объяснение здесь.
Пример вашего варианта использования:
find /a/myProject/.project/ -type f | cpio -p -dumv /b/.
Эта команда находит все файлы в /a/myProject/.project/
и копирует, сохраняя путь, любые файлы, содержащиеся внутри.
Дополнительно к --parents
также необходимо добавить -r
вариант, чтобы не пропустить копию большей части внутреннего каталога
$ cp --parents test/1/.moo test2/
cp: omitting directory ‘test/1/.moo’
Итак, у меня работает команда
$ cp --parents -r test/1/.moo test2/
Имейте в виду, что, похоже, в cp --parents
. Когда я использовал --parents
вместе с --preserve=all
, атрибуты даты и времени НЕКОТОРЫХ целевых каталогов НЕ были сохранены.
Следующая ссылка, кажется, подтверждает, что это ошибка: ошибка # 8767: cp: --preserve = all не работает для родителей при использовании --parent.
Таким образом, похоже, что вы не можете полагаться на сохранение атрибутов при использовании --parents
наряду с такими как --preserve=all
или -p
.
я использовал --parents
с cp
команда и отлично работала со мной. для получения более подробной информации всегда используйте руководство. Спасибо.