Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > *NIX системы: Общие вопросы > код работал при наличии пробелов в именах файлов |
Автор: arcsupport 15.12.2011, 09:21 | ||
Как сделать, что приведенный ниже код корректно работал при наличии пробелов в именах файлов:
Добавлено через 2 минуты и 25 секунд Я так понимаю, надо как-то заставить ls экранировать пробелы. |
Автор: newbee 15.12.2011, 09:49 | ||
Тут проблема не в ls, а в том, что for считает пробел разделителем. Сделай так:
|
Автор: arcsupport 15.12.2011, 10:40 |
Делал подобное вчера ночью. Обрабатывался только первый файл. И всё. |
Автор: newbee 15.12.2011, 10:47 |
Что-то "подобное" ты делал неправильно. Добавлено через 3 минуты и 57 секунд Отредактировала предыдущий комментарий, кавычки забыла поставить. |
Автор: arcsupport 15.12.2011, 11:36 | ||
Спасибо. А не могли бы объяснить, что еще за возможность с заданием переменной
|
Автор: newbee 15.12.2011, 12:09 | ||
Переменная IFS задает разделитель (или набор разделителей - я не помню) для for. Но он мне издавна не нравился, поэтому я про него сразу и не вспомнила. Тебе еще можно сделать так:
|
Автор: arcsupport 15.12.2011, 15:10 | ||
Вот этот код с помощью ffmpeg все равно обработает только первый файл:
|
Автор: newbee 16.12.2011, 09:42 | ||
Хм, полчаса проковырялась. ffmpeg похоже переводит терминал в интерактивный режим и из-за этого шелл "забывает" о цикле... Наверое есть более правильное объяснение этому явлению, и, надеюсь, его здесь приведут, но решение я таки придумала ![]()
|
Автор: arcsupport 16.12.2011, 10:30 |
Спасибо Вам большое, newbee. Если не секрет, объясните ход Ваших мыслей. |
Автор: newbee 16.12.2011, 10:41 |
Пожалуйста. Ход мыслей такой... Во время выполнения кодирования ffmpeg написал что-то вроде "нажми на q, чтобы выйти". Я ничего не трогала, но после обработки первого файла все закончилось. Вообще программа может проверить, запускается она прямо из шелла или нет (например, если она в цепочке конвеера) - и так я пришла к мысли выключить ее интерактивность, запихав в безобдный конвеер ![]() Надеюсь, местные гуру шелла поднимут мои рассуждения на смех и объяснят истинную причину такого поведения программы. |
Автор: bilbobagginz 16.12.2011, 13:24 | ||
если есть пробелы, то find должен знать + xargs тоже.
|
Автор: arcsupport 16.12.2011, 20:50 | ||
bilbobagginz, очень Вас прошу, приведите работающий пример для случая команды:
|
Автор: bilbobagginz 17.12.2011, 22:45 | ||
arcsupport, уж больно замутился с переименовкой. файнд находит. харгс запускает команды. у вас конвеер совсем по-другому построен. не рабочий пример:
не рабочий, т.к. потом надо будет делать цикл переименовки. |
Автор: arcsupport 19.12.2011, 09:10 |
Буду на некоторое время считать это вопрос решенным. |