![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|||||||||
![]() Одинокий гитарист Группа: Администратор Сообщений: 40 367 Регистрация: 30.9.2001 Пользователь №: 592 Вставить ник Цитата ![]() |
Понадобилось мне тут написать простенький скриптик, чтобы по каталогам пробежался. Файлов и каталогов много, мелких, с запутанной структурой - разгребать всё это руками совершенно нереально. Проблема заключается в том, что имена каталогов и файлов - с пробелами. Поэтому то, чем я привык оперировать, не работает. итак, вот что имеем:
Как видите, это я создал тестовый каталог и тестовый файл. Далее, естественно, беру эти имена в кавычки:
Казалось бы - дальше надо всего лишь скормить всё это в цикле нужной мне команде (на самом деле, мне нужна комбинация iconv, mv, tar - но это не суть). Делаю:
Как видно, пробелы в именах всё равно являются разделителями. Я пробовал заэкранировать их обратным слешем:
но результат получил тот же. :-( Я не суперспециалист в шелле (как-то особо никогда не требовалось) - и наверняка упускаю из вида какую-то мелочь. Никто, случаем, не видит - какую? :-) -------------------- Что, устав от поднятой ВЕКом пыли, русский глаз отдохнёт на Солсбереццком шпиле
|
||||||||
|
|||||||||
| |
![]() |
![]()
Сообщение
#2
|
|||
![]() Новенький Группа: Пользователи Сообщений: 1 331 Регистрация: 28.8.2003 Пользователь №: 3 548 Вставить ник Цитата ![]() |
InrecoAAA - каюсь, тестировал недостаточно тщательно. Проблема с пробелами в sh заключается в том, что ни в `...`, ни в "...", ни в переменных, экранирование пробелов не работает. Т.е. даже если echo $1 выводит: a\ b\ c/ то это не значит что будет работать, к примеру, mv $1 destdirname Обходной маневр - это опять же xargs, только не так как предлагает keeper, а по другому :) Ниже приведен абстрактный, но рабочий пример по выводу содержимого найденных файлов.
Данный вариант был всячески оттестирован и признан годным к использованию :) ЗЫ: Три бэкслеша - это не описка. Сообщение отредактировал savagex - 26.2.2006, 1:17 |
||
|
|||
![]() ![]() |
![]() |
Политика конфиденциальности | Легкая версия |