find
не имеет функции замены.Вам нужно вызвать оболочку.
find . -name "*.in" -exec sh -c 'python somescript.py "$0" "${0%.in}.out"' {} \;
$0
- это имя файла, ${0%.in}
удаляет суффикс .in
.
В качестве альтернативы, в bash (но не в обычном sh), запустите shopt -s globstar
, чтобы включить рекурсивное расширение каталога (и shopt -s nullglob
, если есть риск, что не будет никакого соответствующего файла .in
), и используйте цикл for
вместо find
.
for x in **/*.in; do
python somescript.py "$x" "${x%.in}.out"
done