Другая причина, по которой это может произойти, заключается в том, что сайту требуется SSL. Ваш браузер будет автоматически перенаправлять с HTTP на HTTPS, но curl и wget - нет. Так что попробуйте запрос с HTTPS вместо HTTP.
Ты пишешь
because it starts with a./ it will just be executed ("No such file or directory").
Это не то, что происходит. Вы указали одну команду для параметра find... -exec
параметра echo "{}"
. Обратите внимание, что это не echo
, а каталог, найденный с помощью find
; это единственная команда, в имени которой есть пробел. Команда find
(вполне обоснованно )не может выполнить команду с именем echo "./workspace/6875538616c6/raw/2850cd9cf25b/360"
.
Удалите одинарные кавычки вокруг параметра -exec
, и вы обнаружите, что вам не нужны какие-либо дополнительные изменения или обходные пути:
find. -name '360' -type d -exec echo "{}" \;
Точно так же здесь вам нужно удалить цитирование всего значения, переданного в -exec
. Но в этом случае вам все равно нужно заключать аргументы хранения в кавычки, чтобы оболочка не могла интерпретировать &
и т. д.
find reallylongfolderstructure -name '360' -type d -exec curl 'http://user:token@ourdomain.net/jenkins/job/jobname/buildWithParameters?token=ourtoken¶meter={}' \;
Проблема в том, что вы заключаете в кавычки и имя утилиты, и аргумент в виде одной строки, из-за чего find
пытается выполнить все это как имя команды.
Вместо этого используйте
find. -type d -name '360' -exec curl "http://user:token@ourdomain.net/jenkins/job/jobname/buildWithParameters?token=ourtoken¶meter={}" ';'
В некоторых старых реализациях find
{}
не будет распознаваться как путь, найденный find
при объединении с другой строкой, как указано выше, и вместо этого вам придется использовать дочернюю оболочку:
С вашим звонком наcurl
:
find -type d -name '360' -exec sh -c '
for pathname do
curl "http://user:token@ourdomain.net/jenkins/job/jobname/buildWithParameters?token=ourtoken¶meter=$pathname"
done' sh {} +
См. также:
Вbash
:
shopt -s globstar
for pathname in./**/360/; do
curl "http://user:token@ourdomain.net/jenkins/job/jobname/buildWithParameters?token=ourtoken¶meter=$pathname"
done
Параметр оболочки globstar
делает доступным шаблон глобуса **
. Он работает как *
, но совпадает по косой черте в пути.