Главная страница
Вход
Логин: Пароль:Забыли пароль?
Запомнить вас на этом компьютере?

Здравствуйте, гость ( Вход | Регистрация )

Скрыть объявления

Объявления

Форумы в Telegram - @vladforum С темами, всё как на форуме, только в Telegram!

> Экранирование пробелов в Bash, вопрос к знатокам :-)
ÄÄÄ
сообщение 25.2.2006, 16:40
Сообщение #1


Одинокий гитарист

Группа: Администратор 
Сообщений: 40 367
Регистрация: 30.9.2001
Пользователь №: 592
Вставить ник Цитата


Понадобилось мне тут написать простенький скриптик, чтобы по каталогам пробежался. Файлов и каталогов много, мелких, с запутанной структурой - разгребать всё это руками совершенно нереально.

Проблема заключается в том, что имена каталогов и файлов - с пробелами. Поэтому то, чем я привык оперировать, не работает.

итак, вот что имеем:

Код

[aaa@aaa test]$ find * -print
каталог с пробелами
каталог с пробелами/файл с пробелами.ф


Как видите, это я создал тестовый каталог и тестовый файл.

Далее, естественно, беру эти имена в кавычки:


Код

[aaa@aaa test]$ find * -print | sed -e 's/.*/"&"/g'
"каталог с пробелами"
"каталог с пробелами/файл с пробелами.ф"


Казалось бы - дальше надо всего лишь скормить всё это в цикле нужной мне команде (на самом деле, мне нужна комбинация iconv, mv, tar - но это не суть). Делаю:

Код

[aaa@aaa test]$ for f in `find * -print | sed -e 's/.*/"&"/g'`; do echo "$f"; done
"каталог
с
пробелами"
"каталог
с
пробелами/файл
с
пробелами.ф"


Как видно, пробелы в именах всё равно являются разделителями.

Я пробовал заэкранировать их обратным слешем:

Код

for f in `find * -print | sed -e 's/.*/"&"/g' | sed -e 's/ /\\ /g'`; do echo "$f"; done


но результат получил тот же. :-(

Я не суперспециалист в шелле (как-то особо никогда не требовалось) - и наверняка упускаю из вида какую-то мелочь. Никто, случаем, не видит - какую? :-)


--------------------
Что, устав от поднятой ВЕКом пыли, русский глаз отдохнёт на Солсбереццком шпиле
Перейти в начало страницы
 
+Цитировать сообщение

Сообщений в этой теме


  Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




RSS       Политика конфиденциальности
Легкая версия