Команда cp с ключом -r рекурсивно копирует каталоги, но что делать когда в каталоге есть вложенные скрытые каталоги/файлы? Например такие как .git или .htaccess
В данном случае они не скопируются в каталог dir2
1 | cp -r dir1/* dir2/ |
Чтобы понять наглядно что нужно сделать и как это работает «изнутри» перейдем в каталог dir1 и наберем команду find без аргументов
1 2 | cd dir1/ find |
и мы увидим, что де факто абсолютно все файлы и каталоги(в том числе не скрытые) начинаются с точки, затем слеш и лишь затем относительный путь файла/каталога. Т.е. увидим полное содержимое каталога!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | . ./.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 |
Это именно то, что нам нужно указать в команде рекурсивного копирования всех файлов:
1 | cp -r dir1/. dir2/ |