Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Операционные системы
>
Unix и другие
>
BSD
(Модераторы:
MOPO3
,
Sla
,
McZim
) > Тема:
Как сделать ?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как сделать ? (Прочитано 16293 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Модератор
Offline
Пол:
Холадна аднака!
Как сделать ?
«
:
07-03-2005 12:22 »
Есть во фришке определённый каталог. У него есть 120 подкаталогов. Каждый из подкаталогов имеет одинаковую структуру с одинаковыми файлами.
В одном из подкаталогов, я внёс изменения в два файла. Вопрос : можно ли средствами консоли скопировать эти файлы во все остальные каталоги ?
Записан
MCP, MCAD, MCTS:Win, MCTS:Web
npak
Команда клуба
Offline
Пол:
Re: Как сделать ?
«
Ответ #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
Пол:
Re: Как сделать ?
«
Ответ #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
Ай да дэдушка! Вах...
Модератор
Offline
Пол:
Холадна аднака!
Re: Как сделать ?
«
Ответ #3 :
07-03-2005 13:11 »
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
Пол:
Re: Как сделать ?
«
Ответ #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
Ай да дэдушка! Вах...
Модератор
Offline
Пол:
Холадна аднака!
Re: Как сделать ?
«
Ответ #5 :
07-03-2005 13:53 »
Цитата: RXL от 07-03-2005 13:39
Кстати, о жестких ссылках уже пару раз говорилось. Может тебе сделать как говорит npak: в однин каталог клади файлы, а в другие делай жесткие ссылки. Если позволяют условия, то можно и символические использовать.
Хмм... А ведь это идея! Пойду проверять получиться ли так
Записан
MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор
Offline
Пол:
Re: Как сделать ?
«
Ответ #6 :
07-03-2005 14:15 »
Напомню ограничения на
жесткие
ссылки: все ссылки на один файл могут находиться только на одном разделе и только на файловой системе, поддерживающей их.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serega
Гость
Re: Как сделать ?
«
Ответ #7 :
20-02-2006 17:56 »
пользуй rsync если фалы на разных дисках, а если на одном то лучше один раз создать структуру из ссылок и потом скопировать её 120 раз )
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Операционные системы
>
Unix и другие
>
BSD
(Модераторы:
MOPO3
,
Sla
,
McZim
) > Тема:
Как сделать ?
Загружается...