The OpenNET Project / Index page

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

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

"Имя файла в Shell."
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 21-Окт-04, 09:11  (MSK)
Есть у меня маленький скрипт.
Суть скрипта, перенаправлять содержимое файлов на bogofilter. После операции удалять файл.
Файлы в каталог сохраняют юзеры.
#!/bin/sh
for elem in `ls /users_tlink/filter/spam/`
do
  /bin/cat /users_tlink/filter/spam/$elem | /usr/local/bin/bogofilter -s
  /bin/rm /users_tlink/filter/spam/$elem
done

Столкнулся с такой проблемой - пробелы в имени файлов. Юзеры сохраняют файлы как им Бог на душу положит. Естественно попадаются файлы с пробелами в имени. Такие имена в `ls /users_tlink/filter/spam/` разделяются на два элемента. В свою очередь, cat и rm конечно не могут найти файл по кускам имени. Через sed, пробовал обрабатывать множество - `ls /users_tlink/filter/spam/ | sed 's/ /###/g'`
и перед подачей в cat заменять - ele=`echo $elem | sed 's/###/ /g'`
Cat снова не мог найти файл, потому как пробел в имени он считает разделителем в списке файлов. Пробывал перед пробелом добавлять \ - помогает.
Что еще сделать с именем, что бы cat сожрал нормально?
С одной стороны проблема не ахти какая, если бы скрипт не слал письма с ошибками.
Помогите, люди добрые ....

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

 Оглавление

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

1. "Имя файла в Shell."
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 21-Окт-04, 10:14  (MSK)
>Есть у меня маленький скрипт.
>Суть скрипта, перенаправлять содержимое файлов на bogofilter. После операции удалять файл.
>Файлы в каталог сохраняют юзеры.
>#!/bin/sh
>for elem in `ls /users_tlink/filter/spam/`
>do
>  /bin/cat /users_tlink/filter/spam/$elem | /usr/local/bin/bogofilter -s
>  /bin/rm /users_tlink/filter/spam/$elem
>done
>
>Столкнулся с такой проблемой - пробелы в имени файлов. Юзеры сохраняют файлы
>как им Бог на душу положит. Естественно попадаются файлы с пробелами
>в имени. Такие имена в `ls /users_tlink/filter/spam/` разделяются на два элемента.
>В свою очередь, cat и rm конечно не могут найти файл
>по кускам имени. Через sed, пробовал обрабатывать множество - `ls /users_tlink/filter/spam/
>| sed 's/ /###/g'`
>и перед подачей в cat заменять - ele=`echo $elem | sed 's/###/
>/g'`
>Cat снова не мог найти файл, потому как пробел в имени он
>считает разделителем в списке файлов. Пробывал перед пробелом добавлять \ -
>помогает.
>Что еще сделать с именем, что бы cat сожрал нормально?
>С одной стороны проблема не ахти какая, если бы скрипт не слал
>письма с ошибками.
>Помогите, люди добрые ....

#!/bin/sh

for i in `ls <directory> | sed 's/ /###/g'`;
do
        cat "`echo $i | sed 's/###/ /g'`"
done


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

2. "Имя файла в Shell."
Сообщение от Страусъ emailИскать по авторуВ закладки(??) on 21-Окт-04, 10:26  (MSK)
Благодарю!
До такого использования еще не доходил :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Имя файла в Shell."
Сообщение от sas emailИскать по авторуВ закладки(ok) on 21-Окт-04, 10:35  (MSK)
>>Есть у меня маленький скрипт.
>>Суть скрипта, перенаправлять содержимое файлов на bogofilter. После операции удалять файл.
>>Файлы в каталог сохраняют юзеры.
>>#!/bin/sh
>>for elem in `ls /users_tlink/filter/spam/`
>>do
>>  /bin/cat /users_tlink/filter/spam/$elem | /usr/local/bin/bogofilter -s
>>  /bin/rm /users_tlink/filter/spam/$elem
>>done
>>
>>Столкнулся с такой проблемой - пробелы в имени файлов. Юзеры сохраняют файлы
>>как им Бог на душу положит. Естественно попадаются файлы с пробелами
>>в имени. Такие имена в `ls /users_tlink/filter/spam/` разделяются на два элемента.
>>В свою очередь, cat и rm конечно не могут найти файл
>>по кускам имени. Через sed, пробовал обрабатывать множество - `ls /users_tlink/filter/spam/
>>| sed 's/ /###/g'`
>>и перед подачей в cat заменять - ele=`echo $elem | sed 's/###/
>>/g'`
>>Cat снова не мог найти файл, потому как пробел в имени он
>>считает разделителем в списке файлов. Пробывал перед пробелом добавлять \ -
>>помогает.
>>Что еще сделать с именем, что бы cat сожрал нормально?
>>С одной стороны проблема не ахти какая, если бы скрипт не слал
>>письма с ошибками.
>>Помогите, люди добрые ....
>
>#!/bin/sh
>
>for i in `ls <directory> | sed 's/ /###/g'`;
>do
>        cat "`echo $i |
>sed 's/###/ /g'`"
>done

mkdir -p tmp/zzz
touch tmp/zzz/111\ 111\ 111
touch tmp/zzz/222\ 222\ 222
for f in tmp/zzz/*; do
   echo "file name=[$f]"
done

Удачи
--- sas

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


Удалить

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




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

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