Как @Kusalananda сказал , вам не хватает -c
, чтобы иметь возможность использовать встроенный -скрипт.
Но даже в этом случае никогда не встраивайте {}
в шелл-код, это может привести к уязвимости, связанной с внедрением произвольной команды (подумайте, например, о файле с именем '$(reboot)'.mp3
в вашем примере ). Вместо этого сделайте его аргументом встроенного скрипта (, предполагая, что вам здесь нужен встроенный скрипт, а cp
— это просто пример ).
find... -exec sh -c 'cp "$1" /home/jason/gPodder/mp3' sh {} \;
(вам также не нужно bash
только для этого. Ваш sh
подойдет так же ).
Или, что еще лучше, передать сразу несколько аргументов вcp
:
find... -exec sh -c 'cp "$@" /home/jason/gPodder/mp3' sh {} +
С помощью GNU cp
вы также можете это сделать:
find... -exec cp -t /home/jason/gPodder/mp3 {} +
Curl, если вы хотите использовать его для доступа к URL-адресам, поддерживает URL-адреса с диапазонами:
curl... 'https://bitcointalk.org/index.php?topic=840124.[0-4240]'
Где ...
— другие параметры, которые вы можете использовать.
Синтаксис диапазона также допускает пошаговое приращение, отличное от 1. Например, чтобы получить каждый 20-й URL:
curl... 'https://bitcointalk.org/index.php?topic=840124.[0-4240:20]'
Дополнительную информацию см. в руководстве curl
.
Чтобы сгенерировать список URL-адресов для отдельной обработки с помощью curl
или какой-либо другой программы, рассмотрите возможность использования расширения скобок (, если ваша оболочка поддерживает это):
printf '%s\n' 'https://bitcointalk.org/index.php?topic=840124.'{0..4240}
С bash
и некоторыми другими оболочками можно использовать приращение, как в '...URL...'{0..4240..20}
.
Затем список может быть передан, например,. xargs
, который может вызывать вашу curl
или другую программу с URL-адресами в качестве аргументов.