Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать ?  (Прочитано 16025 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Модератор

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 07-03-2005 12:22 » 

Есть во фришке определённый каталог. У него есть 120 подкаталогов. Каждый из подкаталогов имеет одинаковую структуру с одинаковыми файлами.
В одном из подкаталогов, я внёс изменения в два файла. Вопрос : можно ли средствами консоли скопировать эти файлы во все остальные каталоги ?
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 07-03-2005 12:56 » 

sh скрипт выполнить в том, у которого 120 подкаталогов. Скрипт скопирует указанные два файла во все подкаталоги текущего каталога
Код:
F1=<путь к первому изменённому файлу>
F2=<путь к второму изменённому файлу>
for d in `find . -maxdepth 1 -mindepth 1`; do cp $F1 $F2 $d/; done
Но если ты хочешь, чтобы во всех каталогах были одни и те же файлы, воспользуйся жёсткими ссылками
см. man ln
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 07-03-2005 12:58 » 

Код:
#!/bin/sh

if [ $# -eq 2 ];then
  BASEDIR=$1
  SRCDIR=$2
else
  echo "Usage: cp2 <basedir> <srcdir>" 1>&2
  exit 1
fi

OLDDIR=$PWD
cd $BASEDIR

for DIR in *
do
  [ ! -d "$DIR" ] && continue;
  [ "$DIR" = "$SRCDIR ] && continue;
  cp -f $SRCDIR/* $DIR/
done

cd $OLDDIR
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Модератор

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 07-03-2005 13:11 » new

RXL , я не рублю практически в sh, посему нужны некоторые пояснения :
BASEDIR=$1 - это как я понимаю каталог из которого брать файлы
SRCDIR=$2 - это как я понимаю каталог куда копировать

OLDDIR=$PWD -  :?
[ ! -d "$DIR" ] && continue; -  :?
if [ $# -eq 2 ];then -  :?
« Последнее редактирование: 07-03-2005 13:21 от MOPO3 » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 07-03-2005 13:39 » 

BASEDIR
"Есть во фришке определённый каталог. У него есть 120 подкаталогов."
Абсолютный или относительный от текушего каталога путь.

SRCDIR
"В одном из подкаталогов, я внёс изменения в два файла."
Относительный от BASEDIR путь. Посути, просто имя каталога без слешей.

OLDDIR=$PWD
Т.к.  в программе я меняю путь, то я запоминяю текущий и устанавливаю его перед завершением.

[ ! -d "$DIR" ] && continue;
Если файл с имянем в DIR не каталог, то пропустить его. Скопировать группу файлов в другой файл никак не возможно.

if [ $# -eq 2 ];then
Проверяю число параметров программы - если не 2, то печатаю help и выхожу с ошибкой.


Кстати, о жестких ссылках уже пару раз говорилось. Может тебе сделать как говорит npak: в однин каталог клади файлы, а в другие делай жесткие ссылки. Если позволяют условия, то можно и символические использовать.
« Последнее редактирование: 07-03-2005 13:43 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Модератор

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #5 : 07-03-2005 13:53 » 

Кстати, о жестких ссылках уже пару раз говорилось. Может тебе сделать как говорит npak: в однин каталог клади файлы, а в другие делай жесткие ссылки. Если позволяют условия, то можно и символические использовать.
Хмм... А ведь это идея! Пойду проверять получиться ли так Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 07-03-2005 14:15 » 

Напомню ограничения на жесткие ссылки: все ссылки на один файл могут находиться только на одном разделе и только на файловой системе, поддерживающей их.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serega
Гость
« Ответ #7 : 20-02-2006 17:56 » 

пользуй rsync если фалы на разных дисках, а если на одном то лучше один раз создать структуру из ссылок и потом скопировать её 120 раз )
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines