У меня есть каталог, который содержит кучу других папок, содержащих файлы CoffeeScript / JavaScript. Я могу скомпилировать файлы CoffeeScript в новую папку с той же структурой папок.
Я хочу рекурсивно скопировать все файлы * .js из исходной папки в папку назначения. Я также не хочу перезаписывать файлы, которые уже присутствуют в папке назначения. Есть мысли о том, как этого добиться?
Я попытался использовать cp -n source/**.js desination/
и, cp -Rn source/**.js desination/
посмотрев на другой подобный вопрос, но, похоже, он не работает.
Есть идеи, как этого добиться?
linux
file-transfer
cp
AlbertEngelB
источник
источник
Ответы:
Вы можете использовать rsync (он также делает локальное копирование)
-r
переходить в каталоги,--ignore-existing
игнорировать существующие файлы в месте назначения,include
иexclude
фильтрует средний: включает в себя все каталоги, включают в себя все * .js файлы, исключить остальные; первое включение необходимо, в противном случае окончательное исключение также исключит каталоги до сканирования их содержимого.Наконец, вы можете добавить,
-P
если вы хотите наблюдать за прогрессом, a,--list-only
если вы хотите увидеть, что он будет копировать без фактического копирования, и a,-t
если вы хотите сохранить метки времени.Это не связано, но я недавно узнал команду rsync, когда переместил 15-летние документы из одного раздела в другой. Уверенный, что мои файлы были там, я тогда стер старый раздел и поместил туда другие вещи; Позже я понял, что потерял все метки времени, и обнаружил флаг -t. Просто хотел поделиться своим несчастьем: '(
источник
rsync
по-видимому, это бомба.Это также достижимо с помощью cp. Посмотреть здесь:
ххх = источник
гггг = пункт назначения
v = многословный
n = нет клоббера (без перезаписи)
p = сохранить права
r = рекурсивный
источник
Глядя на страницы руководства, кажется, что вы хотите
-n
вариант.источник
В моем дистрибутиве не было клоббера, поэтому:
ххх = источник
гггг = пункт назначения
v = многословный
я = интерактивный (запрос перезаписать) | именно поэтому команде предшествует "echo n |"
p = сохранить права
r = рекурсивный
источник