LINUX.ORG.RU

Изменить вывод find

 


0

1

Здравствуйте!

Подскажите, пожалуйста, как сделать так, чтобы комманда find вывела не такой список файлов:

./a.txt
./b.txt
./c.txt

А вот такой:

"./a.txt" "./b.txt" "c.txt"

Заранее спасибо!


Ответ на: комментарий от egorcod

там не будет «квотироваться» двойная кавычка в имени файла, примерно тоже самое, что find -print0 | xargs -0 printf '"%s" '

anonymous
()
Ответ на: комментарий от anonymous

спасибо за уточнение, но, наверное, все-таки, вот так?

find -print0 | sed 's/\"/\\\"/g' | xargs -0 printf '"%s" '

ну чтоб уж экранировались двойные кавычки...

metawishmaster ★★★★★
()
Ответ на: комментарий от metawishmaster

мной и не предлагалось рeшения в рамках стандартных утилит - не умею (ну на яп: ruby -rfind -e 'Find.find("/tmp"){|x| p x}' | paste -sd ' ' - для протокола)

sed 's/\«/\\\»/g'

смысл? мало что даст: подобное экранирование dquote подразумевает определенные esc-последовательности в строке: хотя бы \\ (ну вот было там \" -> стало \\" )

anonymous
()
Ответ на: комментарий от anonymous

не умею

ну в баше что-то подобное вроде было

anonymous
()
Ответ на: комментарий от metawishmaster

А чтоб экранировалось правильно, если в именах файлах кавычки, то надо вместо %s юзать вместо %q.

vodz ★★★★★
()
Ответ на: комментарий от metawishmaster

у меня «%q: invalid conversion specification» :-\

'q' - это спецификатор printf, встроенного в bash

vodz ★★★★★
()
Ответ на: комментарий от metawishmaster

вообще-то подразумевалось простое

a\"b -[твой sed]-> a\\"b -[printf]-> "a\\"b"

тут проблема в том: непонятно где будет использоваться выхлоп: а нужно согласование правил (а там могут быть нюансы) экранирования строк с целевой программой

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.