Лучший способ скопировать несколько каталогов в новый каталог

33

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

cp -r css/ ar/
cp -r images/ ar/
cp -r js/ ar/
cp -r backups/ ar/

Я только что связал их вместе точкой с запятой.

Джефф Шаллер
источник

Ответы:

63

Копирование папок в другую папку (папка в папке):

cp -r css images js backups ar/

Примечание: это отличается от копирования только самого содержимого (содержимого папок в папке):

cp -r css/ images/ js/ backups/ ar/
Porton
источник
4
косые черты имеют значение! всегда подозревал, никогда не знал
Питер Перхач
2
косые черты не имеют значения в моем тестировании. cpне rsync. однако cp -r css/. images/. ar/копирует содержимое без каталогов. моя версия cp "cp (GNU coreutils) 8.29".
sourcejedi
1

Ответ прост, и он работает в Debian: «Вот как я это сделал» (протестировано). Допустим, вы находитесь в / etc и хотите скопировать некоторые файлы и папки, прежде чем отформатировать жесткий диск (по какой-то причине). введите следующее, и все, что упомянуто ниже, будет скопировано в папку / mybackups / :

sudo cp -r -a apt/ bash.bashrc environment hosts init.d/ init/ nginx/ proxychains.conf sudoers sysctl.d/ profile.d/ grub.d/ /boot/grub/ /opt/ /root/ /var/www/ /mybackups/

как вы можете видеть выше, я попытался скопировать папки извне и т. д. , указав на его расположение, например / boot / grub / или / opt /, и это сработало!

M03
источник
1
Я считаю, что -r там не нужен, так как -a уже содержит его (через: man).
Дэвид Поточник
-2

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

Вы можете копировать рекурсивно используя -rпараметр, хотя.

Например:

cp -r <source> <destination> 
Суман
источник