Рекурсивное копирование скрытых файлов и каталогов в bash

Команда cp с ключом -r рекурсивно копирует каталоги, но что делать когда в каталоге есть вложенные скрытые каталоги/файлы? Например такие как .git или .htaccess

В данном случае они не скопируются в каталог dir2

cp -r dir1/* dir2/

Чтобы понять наглядно что нужно сделать и как это работает «изнутри» перейдем в каталог dir1 и наберем команду find без аргументов

cd dir1/
find

и мы увидим, что де факто абсолютно все файлы и каталоги(в том числе не скрытые) начинаются с точки, затем слеш и лишь затем относительный путь файла/каталога. Т.е. увидим полное содержимое каталога!

.
./.git
./.git/hooks
............ прочие файлы ./.git
./index.php
./include
./include/config.php
./classes
./classes/user.class.php
./classes/get.class.php
./LICENSE
./.htaccess
./README.md
./tpl
./tpl/404.php
./api
./api/sign.php

Это именно то, что нам нужно указать в команде рекурсивного копирования всех файлов:

cp -r dir1/. dir2/

 

 

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *