Intereting Posts
Увеличьте размер файловой системы внутри изображения qcow2 Сообщение rsync «пропускать нерегулярный файл», когда не копируются ссылки Как я могу поместить эту строчную манипуляцию в цикле, чтобы она продолжалась, пока нечего делать? Кто отрезает первый символ файла замещения процесса и по какой причине? Какой сигнал отправляется, когда вы закрываете терминал bash для запущенных программ Какой файл кэширует подсистемы? Повторное добавление основного хранилища Debian к источникам Человек -f, что означает (1)? удалить пользователя с уникальным идентификатором Как найти все файлы с файлом формата Heena_Report_MMDDYYY.CSV через команду Unix с даты марта 2016 года до даты? Как назначить переменную и использовать sed для замены содержимого файла конфигурации в Dockerfile? Как читать весь скрипт оболочки перед его исполнением? Как я намеренно обрушиваю Ubuntu Linux 14.04 LTS? Установите Arch Linux на MBP и удалите Mac OS Самое раннее, что я могу запустить xrandr?

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

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

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

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

 cp root/ rootCopy/ --except node_modules 

?

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

Вы можете попробовать с помощью команды 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 вся новая структура для реальной цели