2017-01-13 3 views
1

я пытаюсь ПКППЫ несколько файлов из источника destination.The сценария имя исходного файла отличается от конечного файлаПКППЫ несколько файлов с разными именами из источника и назначения

Здесь ИЙ Command я пытаюсь

scp /u07/retail/Bundle_de.properties [email protected]<fc_host>:/u01/projects/MultiSolutionBundle_de.properties 

В основном у меня есть более 7 файлов, которые я пытаюсь разделить на отдельные части, чтобы добиться этого. Поэтому я хочу, чтобы клуб его в одном УПП передать все файлы

Немногие из команд Scp я пытаюсь здесь -

$ scp /u07/retail/Bundle_de.properties [email protected]<fc_host>:/u01/projects/MultiSolutionBundle_de.properties 

$ scp /u07/retail/Bundle_as.properties [email protected]<fc_host>:/u01/projects/MultiSolutionBundle_as.properties 

$ scp /u07/retail/Bundle_pt.properties [email protected]<fc_host>:/u01/projects/MultiSolutionBundle_pt.properties 

$ scp /u07/retail/Bundle_op.properties [email protected]<fc_host>:/u01/projects/MultiSolutionBundle_op.properties 

Я ищу решение, с помощью которого я могу достичь указанной выше 4 файлов в одной команде scp.

+0

переместить все файлы в одну папку, а затем ZiP его с помощью 'tar' или 'gzip', а затем сделайте' SCP' –

+0

@smn_onrocks: Если я застегнул его и сделаю scp. Тем не менее, у меня есть имена исходных файлов, поэтому мне нужно вручную переименовать файлы, как в пункте назначения. Файлы назначения не должны иметь имена исходных файлов. Поскольку эти файлы важны для другой цели установки. –

+0

вы можете автоматизировать процесс переименования с помощью 'MV'. Я могу предоставить u некоторый' .sh' файл для такого рода вещей. –

ответ

1

с GNU дегтя, SSH и Баш:

tar -C /u07/retail/ -c Bundle_{de,as,pt,op}.properties | ssh [email protected]_host tar -C /u01/projects/ --transform 's/.*/MultiSolution\&/' --show-transformed-names -xv 

Если вы хотите использовать подстановку (*) с именами файлов:

cd /u07/retail/ && tar -c Bundle_*.properties | ssh [email protected]_host tar -C /u01/projects/ --transform 's/.*/MultiSolution\&/' --show-transformed-names -xv 

-C: изменения в каталог

-c: создать новый архив

Bundle_{de,as,pt,op}.properties: Баш расширяет это Bundle_de.properties Bundle_as.properties Bundle_pt.properties Bundle_op.properties перед выполнением команды дегтя

--transform 's/.*/MultiSolution\&/': перед именем MultiSolution для имен файлов

--show-transformed-names: показать имена файлов после преобразования

-xv: извлекать файлы и пространно список файлов обрабатываются

+0

Мне нравится этот ответ (и я всегда забываю инструмент '--transform' GNU tar). Я думаю, что это лучше, чем мое, за исключением того, что вы используете 'scp -u', чтобы сократить время, когда изменяется только несколько файлов (это решение должно каждый раз передавать все файлы). Но если вы это делаете, вы, скорее всего, захотите «rsync». –

+1

@Cyrus: Это то, что я точно ищу. Большое спасибо. –

2

Похоже простой цикл в любой стандартной POSIX оболочки:

for i in de as pt op 
do scp "/u07/retail/Bundle_$i.properties" "[email protected]<fc_host>:/u01/projects/MultiSolutionBundle_$i.properties" 
done 

В качестве альтернативы, вы могли бы дать восстановленным файлам новые имена локально (копирование, связь, или двигаться), а затем передавать их с шаблона:

dir=$(mktemp -d) 
for i in de as pt op 
do cp "/u07/retail/Bundle_$i.properties" "$dir/MultiSolutionBundle_$i.properties" 
done 
scp "$dir"/* "[email protected]<fc_host>:/u01/projects/" 
rm -rf "$dir" 
+0

Это сработало для меня, если у меня были ограниченные файлы для копирования.! Но сценарий заключается в том, что мы не будем писать сценарий оболочки или любые сценарии для достижения этой цели. В конечном итоге нам нужен удобный способ скопировать файлы. Поэтому я ищу один лайнер для его достижения. Поскольку количество файлов будет продолжать увеличиваться или уменьшаться. –

+0

Затем вы просто меняете цикл 'for' на' для i в свойствах $ path// Bundle _ ??.; do cp "$ i" "$ dir/MultiSolution $ {i ## * /}"; сделано "или тому подобное. Вам не нужно кормить ложкой, не так ли? –

+0

Я получил окончательную логику вашего ответа. Спасибо за ваши материалы .. !!. –

Смежные вопросы