The OpenNET Project / Index page

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



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

Оглавление

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

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


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ообщить модератору

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

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




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

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