Скопируйте папку рекурсивно, но избегая копирования файлов с заданным расширением [duplicate]

После подключения второго экрана используйте следующие клавиши быстрого доступа Супер-ключ (или Windows-Key) + P. Каждый раз, когда он нажимается, вы будете переключаться между

Расширенный дисплей Дублированный дисплей отображает прикрепленный экран / проектор только собственный (ноутбук / рабочий стол) экран только
18
задан 14 June 2016 в 01:15

10 ответов

Используйте rsync:

rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination

Обратите внимание, что использование source и source/ отличается. Конечная косая черта означает скопировать содержимое папки source в destination. Без конечной косой черты это означает, что копировать источник папки в destination.

Альтернативно, если у вас есть много каталогов (или файлов) для исключения, вы можете использовать --exclude-from=FILE, где FILE имя файла, содержащего файлы или каталоги для исключения.

--exclude также может содержать подстановочные знаки, такие как --exclude=*/.svn*

Скопировано из: https://stackoverflow.com/ a / 2194500/749232

Если вы хотите использовать сам cp:

find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'

Это предполагает, что структура целевой директории совпадает с исходной.

Скопировано из: https://stackoverflow.com/a/2194500/749232

32
ответ дан 17 July 2018 в 23:25

Используйте rsync:

rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination

Обратите внимание, что использование source и source/ отличается. Конечная косая черта означает скопировать содержимое папки source в destination. Без конечной косой черты это означает, что копировать источник папки в destination.

Альтернативно, если у вас есть много каталогов (или файлов) для исключения, вы можете использовать --exclude-from=FILE, где FILE имя файла, содержащего файлы или каталоги для исключения.

--exclude также может содержать подстановочные знаки, такие как --exclude=*/.svn*

Скопировано из: https://stackoverflow.com/ a / 2194500/749232

Если вы хотите использовать сам cp:

find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'

Это предполагает, что структура целевой директории совпадает с исходной.

Скопировано из: https://stackoverflow.com/a/2194500/749232

32
ответ дан 24 July 2018 в 13:55

Используйте rsync:

rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination

Обратите внимание, что использование source и source/ отличается. Конечная косая черта означает скопировать содержимое папки source в destination. Без конечной косой черты это означает, что копировать источник папки в destination.

Альтернативно, если у вас есть много каталогов (или файлов) для исключения, вы можете использовать --exclude-from=FILE, где FILE имя файла, содержащего файлы или каталоги для исключения.

--exclude также может содержать подстановочные знаки, такие как --exclude=*/.svn*

Скопировано из: https://stackoverflow.com/ a / 2194500/749232

Если вы хотите использовать сам cp:

find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'

Это предполагает, что структура целевой директории совпадает с исходной.

Скопировано из: https://stackoverflow.com/a/2194500/749232

32
ответ дан 24 July 2018 в 13:55

Используйте rsync:

rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination

Обратите внимание, что использование source и source/ отличается. Конечная косая черта означает скопировать содержимое папки source в destination. Без конечной косой черты это означает, что копировать источник папки в destination.

Альтернативно, если у вас есть много каталогов (или файлов) для исключения, вы можете использовать --exclude-from=FILE, где FILE имя файла, содержащего файлы или каталоги для исключения.

--exclude также может содержать подстановочные знаки, такие как --exclude=*/.svn*

Скопировано из: https://stackoverflow.com/ a / 2194500/749232

Если вы хотите использовать сам cp:

find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'

Это предполагает, что структура целевой директории совпадает с исходной.

Скопировано из: https://stackoverflow.com/a/2194500/749232

32
ответ дан 24 July 2018 в 16:53

Используйте rsync:

rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination

Обратите внимание, что использование source и source/ отличается. Конечная косая черта означает скопировать содержимое папки source в destination. Без конечной косой черты это означает, что копировать источник папки в destination.

Альтернативно, если у вас есть много каталогов (или файлов) для исключения, вы можете использовать --exclude-from=FILE, где FILE имя файла, содержащего файлы или каталоги для исключения.

--exclude также может содержать подстановочные знаки, такие как --exclude=*/.svn*

Скопировано из: https://stackoverflow.com/ a / 2194500/749232

Если вы хотите использовать сам cp:

find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'

Это предполагает, что структура целевой директории совпадает с исходной.

Скопировано из: https://stackoverflow.com/a/2194500/749232

32
ответ дан 24 July 2018 в 17:01

Поздно в игру, но вот очень простое решение, использующее простые bash и cp: вы можете использовать глобальную спецификацию файла при игнорировании некоторых файлов.

Предположим, что каталог содержит файлы:

$ 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
3
ответ дан 17 July 2018 в 23:25

Поздно в игру, но вот очень простое решение, использующее простые bash и cp: вы можете использовать глобальную спецификацию файла при игнорировании некоторых файлов.

Предположим, что каталог содержит файлы:

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

Поздно в игру, но вот очень простое решение, использующее простые bash и cp: вы можете использовать глобальную спецификацию файла при игнорировании некоторых файлов.

Предположим, что каталог содержит файлы:

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

Поздно в игру, но вот очень простое решение, использующее простые bash и cp: вы можете использовать глобальную спецификацию файла при игнорировании некоторых файлов.

Предположим, что каталог содержит файлы:

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

Поздно в игру, но вот очень простое решение, использующее простые bash и cp: вы можете использовать глобальную спецификацию файла при игнорировании некоторых файлов.

Предположим, что каталог содержит файлы:

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

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

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