Команда cp исключает копирование определенных файлов

Есть ли способ использовать команду 'cp' для копирования каталога и исключения из него определенных файлов / подкаталогов?

1
задан 14 June 2016 в 01:15

1 ответ

Поздно в игру, но вот очень простое решение, использующее простые 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
2
ответ дан 24 May 2018 в 18:57
  • 1
    Для отрицательных совпадений вам нужно включить расширенные глобусы: shopt -s extglob, также вам не нужно экспортировать GLOBIGNORE: предполагается, что он изменит поведение текущей оболочки, большинство детских программ не заботятся об этом. – muru 14 June 2016 в 01:14

Другие вопросы по тегам:

Похожие вопросы: