«Find» и «ls» с параллельным GNU

Я пытаюсь использовать GNU parallel для публикации большого количества файлов в веб-сервер. В моем каталоге у меня есть файлы:

file1.xml
file2.xml

и сценарий оболочки, который выглядит так:

#! /usr/bin/env bash

CMD="curl -X POST -d@$1 http://server/path"

eval $CMD

Есть еще кое-что в сценарий, но это был самый простой пример. Я попытался выполнить следующую команду:

ls | parallel -j2 script.sh {}

Это то, что страницы GNU parallel показывают как «нормальный» способ работы с файлами в каталоге. Кажется, это передает имя файла в мой сценарий, но curl жалуется, что не может загрузить переданный файл данных. Однако, если я передаю:

find . -name '*.xml' | parallel -j2 script.sh {}

, он работает нормально. Есть ли разница между тем, как ls и find передают аргументы моему скрипту? Или мне нужно сделать что-то еще в этом скрипте?

11
задан Adrian Frühwirth 17 April 2014 в 06:34
поделиться