Возьмите всю структуру файла, но эти каталоги

Я хочу скопировать всю структуру файла (с тысячами файлов и сотнями каталогов), это иерархия каталогов, и есть каталог node_modules, который я хочу исключить из процесса копирования.

Есть ли команда Unix для копирования из каталога и всех его файлов и подкаталогов рекурсивно с возможностью сказать, не включают в себя каталоги с именем <name> ?

Что-то вроде :

 cp root/ rootCopy/ --except node_modules 

?

Если нет, есть ли простой способ сделать это из командной строки без написания баха или чего-то еще?

2 Solutions collect form web for “Возьмите всю структуру файла, но эти каталоги”

Вы можете попробовать с помощью команды rsync или tar .

Смотрите эту статью.

Из rsync страницы rsync

  --exclude=PATTERN exclude files matching PATTERN --exclude-from=FILE read exclude patterns from FILE 

 rsync -avz --exclude 'dir*' source/ destination/ 

Жуткий метод, но он работает для меня:

 (find source|egrep -v "node_modules|^source/exact/node_plugin" && echo tmptarget)|xargs cp --parents mv tmptarget/source target 

Объяснение при необходимости. cp работает следующим образом:

 cp source1 source2 ... sourceN target 
  • Так что find печатает всю вашу структуру.
  • Используйте egrep для исключения всех нежелательных ветвей. Убедитесь, что вы правильно сформировали свой узор. Используйте ^ и полный путь, если вы хотите исключить точную ветку или просто node_modules если хотите исключить все из них.
  • распечатать папку назначения с помощью команды echo .
  • Пусть xargs поместит все эти строки в команду cp для вас
  • --parents необходимо для создания папок родителей, потому что мы не можем использовать параметр -r здесь, так как это все испортит в целевой папке.
  • И, наконец, mv вся новая структура для реальной цели
  • Где rsync копирует файл, если я не указываю удаленный путь?
  • Как сделать дубликаты с разными именами из одного файла?
  • Копирование файлов в каталог, открытый через ACL, не получает маску по умолчанию
  • Как вы сравниваете две папки и копируете разницу в третью папку?
  • rsync все каталоги, начинающиеся с определенной цифры
  • Как скопировать файлы * в * камеру?
  • Создавать древовидную структуру каталога клонирования и копировать файлы в соответствующие каталоги, измененные после определенной даты
  • Как скопировать несколько файлов по шаблону?
  • Предотвратить перезапись существующих файлов?
  • Как скопировать файлы с консоли grub?
  • Это UUOC (бесполезное использование кошки) для перенаправления одного файла на другой?
  • Interesting Posts

    Щелкните правой кнопкой мыши с помощью xf86-input-mtrack на macbook pro 13 "retina

    SSH требует аутентификации с ключами

    Как смоделировать соединение USB-накопителя с qemu?

    Команда Awk / sed для вырезания нескольких разделителей

    Эквивалентен «w» в Vim для следующего не буквенно-цифрового символа?

    Почему Samba настаивает на регистрации в качестве гостевого пользователя?

    Ошибка при установке nginx для нескольких приложений ReactJS на одном сервере?

    UNIX – команда разбивать файл на несколько файлов со всеми строками для каждых 3 уникальных значений в столбце

    как создать пользовательский бродячий бокс из экземпляра libvirt / kvm?

    FreeBSD: постоянные узлы для USB-устройств

    Как передать строковый параметр в функции bash?

    Существует ли стандартный способ запуска и остановки служб в Linux?

    Управление локально скомпилированным программным обеспечением

    sed – использовать файл1 для поиска замен, содержащихся в файле2 для строк из файла3

    негладкие шрифты в гноме Fedora

    Linux и Unix - лучшая ОС в мире.