The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите со скриптом"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 16:40  (MSK)
Надо при наличии в каталоге /home/test/  каких-либо каталогов или файлов произвести какое либо действие.Делаю так
#!/bin/bash                                                          
if [ -d /home/test/* ] || [ -/home/test/* ];
then
{
cp -Rf /home/test* /share;                            
        };
fi                                                                         Ругается, если в каталоге /home/test/ одновременно присутсвуют другие каталоги и файлы
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Помогите со скриптом"
Сообщение от temny emailИскать по авторуВ закладки(ok) on 07-Май-04, 16:52  (MSK)
А так?
#!/bin/sh
if [ -d /home/test/*/ ] || [ -f /home/test/* ];
then
{
cp -Rf /home/test* /share;
        };
fi            
      
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 16:58  (MSK)
Это я опечатался. вот как есть
#!/bin/sh
if [ -d /home/test/* ] || [ -f /home/test/* ];
then
{
cp -Rf /home/test/* /share;
        };
fi            

Но и так не работает

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Помогите со скриптом"
Сообщение от temny emailИскать по авторуВ закладки(ok) on 07-Май-04, 17:10  (MSK)
>Это я опечатался. вот как есть
>#!/bin/sh
>if [ -d /home/test/* ] || [ -f /home/test/* ];
!! внимательно после звезды - /home/test/*/
>then
>{
>cp -Rf /home/test/* /share;
>        };
>fi
Попробую объяснить, что было не правильно в случае с -d /home/test/*:
Что делает sh увидев "*" - вместо звезды подстваляет всё, что есть в /home/test. В том случае, если там есть только директории или только файлы, то всё ок. Т.к.
-d /home/test/file1 /home/test/file2
или
-d /home/test/dir1 /home/test/dir2
имеют однозначный ответ - true or false
А вот если вопрос поставлен так:
-d /home/test/dir1 /home/test/file1
то однозначного ответа нет - это не правда и не ложь.
Поэтому как вариант избавления от этого ставим слэш после звезды
Т.е. если в /home/test/ есть dir1 и file1, то вопрос будет выглядеть как
-d /home/test/dir1/  || -f /home/test/dir1 /home/test/file1
Причём до второго test (в котором, при таком раскладе, неопределенность) sh даже не дойдёт, ответив true по первому условию.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 17:19  (MSK)
>Поэтому как вариант избавления от этого ставим слэш после звезды
>Т.е. если в /home/test/ есть dir1 и file1, то вопрос будет выглядеть
>как
>-d /home/test/dir1/  || -f /home/test/dir1 /home/test/file1
>Причём до второго test (в котором, при таком раскладе, неопределенность) sh даже
>не дойдёт, ответив true по первому условию.
Я просто не совсем догоняю, но чуствую что-то рядом :))
У меня в каталоге /home/test/ могут быть разные файлы и каталоги, т.е. нет конкретной привязки к имени. А надо переписывать все от туда и файлы и каталоги, как только они там появились. Подскажите конкретно,что мне подставить :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 17:23  (MSK)
Вот это заморочки, поставил звезду, но если в /home/test/ присутствует 2 каталога.Тогда не работате. :))
ЧТо делать.!!!
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Помогите со скриптом"
Сообщение от temny emailИскать по авторуВ закладки(ok) on 07-Май-04, 17:34  (MSK)
>Вот это заморочки, поставил звезду, но если в /home/test/ присутствует 2 каталога.Тогда
>не работате. :))
>ЧТо делать.!!!
Мдя... а я думал что я прав. Вот я заблуждался 8))

Тогда давай так:
#!/bin/sh
ls -l /home/test/|grep total > /dev/null
if [ $? -eq 0 ];
then
echo blablabla;
fi

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 17:47  (MSK)
>Тогда давай так:
>#!/bin/sh
>ls -l /home/test/|grep total > /dev/null
>if [ $? -eq 0 ];
>then
>echo blablabla;
>fi

Так срабатывает даже при пустом каталоге.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Помогите со скриптом"
Сообщение от nrvalex Искать по авторуВ закладки on 07-Май-04, 17:39  (MSK)
>Надо при наличии в каталоге /home/test/  каких-либо каталогов или файлов произвести
>какое либо действие.Делаю так
>#!/bin/bash
>if [ -d /home/test/* ] || [ -/home/test/* ];
>then
>{
>cp -Rf /home/test* /share;
>        };
>fi            
>          
>          
>          
>          
>          
>      Ругается, если в каталоге /home/test/
>одновременно присутсвуют другие каталоги и файлы


cd /home/test; find .  -type f  -exec cp -f --parent {} /share/  \;

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 17:54  (MSK)

>cd /home/test; find .  -type f  -exec cp -f --parent
>{} /share/  \;

Почти понял мысль :) Но мне еще необходимо не только копирование, а еще к примеру вывод сообщения или еще какие-либо действия помимо одной операции. Может как-то другой скрпит вызывать

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Помогите со скриптом"
Сообщение от nrvalex Искать по авторуВ закладки on 07-Май-04, 18:36  (MSK)
>
>>cd /home/test; find .  -type f  -exec cp -f --parent
>>{} /share/  \;
>
>Почти понял мысль :) Но мне еще необходимо не только копирование, а
>еще к примеру вывод сообщения или еще какие-либо действия помимо одной
>операции. Может как-то другой скрпит вызывать
#!/bin/bash
cd /home/test
find . -type f -printf '%p %f\n ' |while read fullname fname ;do
echo -n  Processing $fullname ...
bla.... bla
echo OK
done
bla.... bla
  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 18:37  (MSK)
>
>>cd /home/test; find .  -type f  -exec cp -f --parent
>>{} /share/  \;
Блин и так я не могу реализовать, народ подскажите как решить эту простую задачу
  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Помогите со скриптом"
Сообщение от Amy emailИскать по авторуВ закладки(ok) on 07-Май-04, 18:38  (MSK)
>
>>cd /home/test; find .  -type f  -exec cp -f --parent
>>{} /share/  \;
>
>Почти понял мысль :) Но мне еще необходимо не только копирование, а
>еще к примеру вывод сообщения или еще какие-либо действия помимо одной
>операции. Может как-то другой скрпит вызывать

Используй -exec несколько раз:
find /home/test  -type f  -exec cp -f {} /share/  \; -exec echo "Копируем {}" \;

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 18:48  (MSK)
Всем огромное спасибо. Вообщем доки много подкинули буду разбираться
  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 19:05  (MSK)
find /home/test  -type f  -exec cp -f {} /share/  \; -exec echo "Копируем {}" \;

Не получается сюда подставить echo Найден файл | smbclient -M alex
и вот еще мне не тоько файлы надо искать но и директории. Если ставлю
find /home/test  -type d  .... То даже если нет ни одного каталога, она находит всеравно каталог .

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "Помогите со скриптом"
Сообщение от nrvalex Искать по авторуВ закладки on 07-Май-04, 19:44  (MSK)
>find /home/test  -type f  -exec cp -f {} /share/  
>\; -exec echo "Копируем {}" \;
>
>Не получается сюда подставить echo Найден файл | smbclient -M alex

см пост 10
>вот еще мне не тоько файлы надо искать но и директории.
>Если ставлю
>find /home/test  -type d  .... То даже если нет ни
>одного каталога, она находит всеравно каталог .


find  . -type d  -mindepth 1

  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "Помогите со скриптом"
Сообщение от alex Искать по авторуВ закладки(??) on 07-Май-04, 19:49  (MSK)
Вот теперь все !!!!
Всем огромное спасибо !!!!!!!!!
С праздником наступающим, и сегодняшним (день связиста)
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру