Это не Python вопрос. Это все о том, как оболочка токенизирует командные строки. Пробелы используются для разделения аргументов команды, поэтому file 2.pdf
отображается как два отдельных аргумента.
Вы можете объединить find
и xargs
, чтобы сделать то, что вы хотите, вот так:
find . -iname '*.pdf' -print0 | xargs -0 foobar
Аргумент -print0
для поиска указывает ему выводить имена файлов, разделенные символами ASCII NUL, а не пробелами, а аргумент -0
для xargs
говорит ему ожидать такой формы ввода. xargs
с последующим вызовом сценария foobar
с правильными аргументами.
Сравнение:
$ ./foobar $(find . -iname '*.pdf' )
['./file', '2.pdf', './file1.pdf']
Кому:
$ find . -iname '*.pdf' -print0 | xargs -0 ./foobar
['./file 2.pdf', './file1.pdf']