
Я хочу скопировать некоторые или все файлы из каталога test/A/
в каталог test/B/
, но не копировать сам каталог A.
Я попробовал команду cp -R test/A/ test/B
, но она копирует каталог и файлы и становится test/B/A/
…
решение1
Указывая test/A/
, вы сообщаете Bash о необходимости скопировать сам каталог.
Чтобы скопировать только содержимое каталога, используйтешар*
:
cp -R test/A/* test/B
Здесь, *
будут соответствовать всем файлам в A, за исключением скрытых, имеющих префикс в виде точки, например .htaccess
. Чтобы включить их также с *
, вызовите shopt -s dotglob
перед.
решение2
чтобы получить идентичную копию локально или удаленно, я бы предпочел rsync
. cp
Это дает вам гораздо более тонкий контроль над тем, что должно быть скопировано или даже удалено либо в источнике, либо в месте назначения, если это необходимо. И, кстати, исправляет проблемы со скрытыми файлами (они же .*
). Базовое использование так же просто, как и с cp
though.
для копирования каталога A
и его содержимого B
используйте:
rsync -va test/A test/B
для копирования содержимого каталога A
(включая скрытые файлы) использовать B
:
rsync -va test/A/ test/B
если B не существует, он создается