find и ошибка с пробелами...

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
kotnaton
Сообщения: 234

find и ошибка с пробелами...

Сообщение kotnaton »

Такая ошибка частенько мне попадается, но не знаю как её обойти. Вот, в очередной раз:

строка типа:

Код: Выделить всё

cat $( find $POINT -type f )


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

Код: Выделить всё

cat: /media/iso/foto: Нет такого файла или каталога
cat: and: Нет такого файла или каталога
cat: mem: Нет такого файла или каталога
cat: booklet: Нет такого файла или каталога
cat: jpg/ВДНХ: Нет такого файла или каталога
cat: 1974.jpg: Нет такого файла или каталога


Как можно "экранировать" выданные в поиске имена ?
бывает же такое ???
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: find и ошибка с пробелами...

Сообщение Bizdelnick »

find "$POINT" -type f -exec cat {} +
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: find и ошибка с пробелами...

Сообщение Vascom »

Если в переменной содержатся или могут содержаться пробелы - бери её в кавычки.
Лучше вообще все переменные по возможности заключать в кавычки.
Спасибо сказали:
kotnaton
Сообщения: 234

Re: find и ошибка с пробелами...

Сообщение kotnaton »

Vascom писал(а):
06.07.2016 09:56
Лучше вообще все переменные по возможности заключать в кавычки.


А я так давно и делаю :D Но далеко не всегда помогает, к примеру в find:

Код: Выделить всё

find "$f" -name "*.tar.*" -exec sh -c "printf '\n%.0s' {1..3} >> tmp ; echo "{}" >> tmp ; tar tvf {} >> tmp" \;
find "$f" -regex '.*\.\(zip\|rar\|7z\|arj\|cab\|chm\)' -exec 7z l "{}" >> tmp  \;


Первая команда даёт ошибку "с пробелами", вторая - нет. Разница естественно в оболочке sh для нескольких инструкций exec...
бывает же такое ???
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: find и ошибка с пробелами...

Сообщение Bizdelnick »

kotnaton писал(а):
07.07.2016 01:37
Разница естественно в оболочке sh для нескольких инструкций exec...
А зачем?
find "$f" -name '*.tar.*' -exec printf '\n\n\n' \; -exec echo {} \; -exec tar tvf {} \; >> tmp
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить