Есть ли способ использовать команду 'cp' для копирования каталога и исключения из него определенных файлов / подкаталогов?
Поздно в игру, но вот очень простое решение, использующее простые bash и cp: вы можете использовать глобальную спецификацию файла при игнорировании некоторых файлов.
Предположим, что каталог содержит файлы: [!d1 ]
$ ls *
listed1 listed2 listed3 listed4 unlisted1 unlisted2 unlisted3
Использование переменной GLOBIGNORE:
$ export GLOBIGNORE='unlisted*'
$ ls *
listed1 listed2 listed3 listed4
Или с более конкретными исключениями:
$ export GLOBIGNORE='unlisted1:unlisted2'
$ ls *
listed1 listed2 listed3 listed4 unlisted3
Или с помощью GLOBIGNORE : [ ! d5]
$ ls !(unlisted*)
listed1 listed2 listed3 listed4
Это также поддерживает несколько непревзойденных шаблонов:
$ ls !(unlisted1|unlisted2)
listed1 listed2 listed3 listed4 unlisted3