The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Перемещение файлов и update, Ищущий ответы (?), 25-Июн-07, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


15. "Перемещение файлов и update"  +/
Сообщение от rad87email (ok), 26-Июн-07, 14:34 
>Вот к примеру написал по памяти не вылезая из броузера:
>#!/bin/bash
>#каталог куда из инета копируются файлы
>SOURCE_PATH=/path/from/www
>#каталог куда перемещаем
>TARGET_PATH=/path/to/bunker
>
># Для всех файлов что есть в каталоге
>for i in $SOURCE_PATH/*
>do
>  FILENAME=`basename $i`
>
>  # копируем куда надо, если не скопируется то в stdout
>будет соответсвующий спам
>  mv $i $TARGET_PATH/$FILENAME
>
>  # если скопировали удачно, то
>  if [ $? == 0 ] then
>
># то пишим в базу
>RES=`sqlplus login/password@database <<EOF
>insert into megatable (name, path) values ('$FILENAME', '$TARGET_PATH');
>exit
>EOF`
>
># отписываемся о результате инсерта в stdout
>[ echo $RES | grep '1 row created' ] || echo "Error!"
>&& echo "OK"
>
>  fi
>done

Подскажите пожалуйста , как можно обработать файлы если они лежат не на  первом уровне, а во вложенных папках т.к  for i in $SOURCE_PATH/*   ищет только на первом уровне.
Командой "find /"  я воспользоваться не  смог так как он  часто выдаёт "ошибку сегментирования" да и после for i in `find $SOURCE_PATH `; команда 'echo $i' выдаёт мне каждое слово по отдельности, а не путь к файлу

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

17. "Перемещение файлов и update"  +/
Сообщение от vic (??), 26-Июн-07, 20:05 
>Командой "find /"  я воспользоваться не  смог так как он
> часто выдаёт "ошибку сегментирования"
офигеть, это что же надо сделать чтобы программа которой уже лет 30 падает?

>for i in `find $SOURCE_PATH `; команда 'echo $i' выдаёт мне каждое слово по
>отдельности, а не путь к файлу

у мя работает и нормально выдает полные пути:
SOURCE_PATH=/home/me
for i in `find $SOURCE_PATH`
do
  echo $i
done

кста, какая система?
давайте скрипт, посмотрим :).


Ответить | Правка | Наверх | Cообщить модератору

19. "Перемещение файлов и update"  +/
Сообщение от rad87email (ok), 27-Июн-07, 11:07 
>кста, какая система?
>давайте скрипт, посмотрим :).


#!/bin/bash
SOURCE_PATH=/exports/DVD-9

# Для всех файлов что есть в каталоге

for i in `find $SOURCE_PATH`;
do
  echo 'файл' $i
  FILENAME=`basename $i`
  COUNT=` echo $FILENAME| wc -c`
# echo 'количество символов' $COUNT
  if [ "$COUNT" -gt 100 ]; then
    NewName=${FILENAME:0:90}
    echo 'Новое имя' $NewName
  fi
done
Задача такая
Найти все файлы в каталоге  (рекурсивно) и если длина из имени больше 100 символов обрезать их до 90 символов
Проблема в том что я не могу перебрать все  файлы, т.к.   for i in `find $SOURCE_PATH`;  мне в  переменную i  заганяет каждое слово в пути к файлу отдельно.

ЗЫ Mandriva 2007

Ответить | Правка | Наверх | Cообщить модератору

20. "Перемещение файлов и update"  +/
Сообщение от jd (??), 28-Июн-07, 02:03 
>Проблема в том что я не могу перебрать все  файлы, т.к.
>  for i in `find $SOURCE_PATH`;  мне в  
>переменную i  заганяет каждое слово в пути к файлу отдельно.

Используйте следующую конструкцию:

find "$SOURCE_PATH" | while read i; do
  #... при обращении к $i берите её в кавычки
done

Или как посоветовали ниже, используйте find -exec.

Ответить | Правка | Наверх | Cообщить модератору

18. "Перемещение файлов и update"  +/
Сообщение от perece (?), 26-Июн-07, 20:18 
>`find $SOURCE_PATH `; команда 'echo $i' выдаёт мне каждое слово по
>отдельности, а не путь к файлу
у вас пробелы в именах файлов? попробуйте конструкцию find -exec ...

\^P^/

Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

Архив | Удалить

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




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

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