2012-05-21 3 views
1

мне нужна помощь в получении что-то, чтобы быть скопированы с вкладышем оболочки или так ..автоматизируют копирование файлов

пример

cp QA/Release/apps/offline/config/logging.yml  Production/Release/apps/offline/config/logging.yml 
cp QA/Release/config/nc_databases_dev.yml   Production/Release/config/nc_databases_dev.yml 
cp QA/Release/config/nc_databases_live.yml  Production/Release/config/nc_databases_live.yml 
cp QA/Release/config/nc_databases_live_dev.yml Production/Release/config/nc_databases_live_dev.yml 
cp QA/Release/config/nc_databases_test.yml  Production/Release/config/nc_databases_test.yml 
cp QA/Release/config/nc_databases_va.yml   Production/Release/config/nc_databases_va.yml 

, если вы видите, я копирую ОК/файлы .. для производства/files .. только первые 2 каталога меняют QA на Production, остальные пути остаются неизменными.

я мог бы получить это далеко, писать имена файлов в файл и читать его, а затем скопировать

for i in `cat file ` ; do cp $i to ????? ; done 

копию $ я к производству, как он читает каждую строку исходного текста, но просто нужно удалить ОК/как это копии на лету ..

Благодаря

+2

Вы копируете все в 'ОК// config' папки Release в' Production// config' папку Release? Или есть вещи, которые вам не нужно копировать? –

+0

Если вы удалите QA/start, что-то вроде 'cp QA/$ i Production/$ i' должно сделать трюк. – bdecaf

+0

Предполагается, что «оболочка лайнера» должна быть «раковиной однослойной»? –

ответ

1

Принимала ли вы посмотрите на rsync? Что-то вроде этого должно делать вещи:

rsync -a --include '*.yml' QA/Release Production/Release/ 

EDIT: проверьте и исправьте линию rsync.

Эта команда скопирует все найденные в каталогах QA/Release, которые уважают шаблон '* .yml' в дереве Porduction/Release. A QA/Release/x/y/z/file.yml будет скопирован в Production/Release/x/y/z/file.yml

+0

rsync не поможет, потому что исходные пути меняют что-то вроде QA/dir/dir1/file Production/dir/dir1/file и QA/dir/dir1/file1 Production/dir/dir1/file1 или QA/dir/dir2/file1 Производство/dir/dir2/file1 ... – Ganaiwali

+0

@Ganaiwali: Я не понимаю, как происходит изменение, не могли бы вы привести еще несколько примеров? –

+0

@Brian yes Я копирую файлы из папки QA/Release/config в папку Production/Release/config. Также источником будет что-то вроде QA/dir/file Production/dir/file или он может измениться на QA/dir/xyz. Производство/dir/xyz – Ganaiwali

0

Разве это не то же самое, что копировать каталог и переименовывать его?

cp -r QA Production 
+0

Не, если цель каталог уже существует. –

+0

mv, чтобы переименовать, как я помню –

0
while read -r name 
do 
    cp "$name" "PRODUCTION/${name#QA/}" 
done < file 

В однострочника:

while read -r name; do cp "$name" "PRODUCTION/${name#QA/}"; done < file 
+0

, который работает потрясающе! Спасибо и всем! – Ganaiwali

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