Eu não posso dizer precisamente qual é o seu problema, mas há vários problemas.
O principal problema que vejo é com esta linha:
cp "$f" ~/temp/merged/$orig_f
Antes de executar o cp, o shell está procurando por uma variável orig_f
(que não existe).
Os sublinhados são caracteres válidos em nomes de variáveis, por exemplo, variable_a="value"
. Então, se você está tentando prefixar ou anexar uma variável com um sublinhado, é necessário fazer isso: ${variable}_a
.
O outro problema é com a citação. Digamos que orig_f
exista, o conteúdo pode conter espaços que se expandem e causam problemas. Portanto, certifique-se de citar quaisquer variáveis que possam se expandir como tal.
Você pode simplificar muito seu script usando:
mkdir -p ~/temp/merged
find . -iname "*.jpg" -type f -print -exec cp {} ~/temp/merged \;
Se você precisar usar um loop while, faça isso:
mkdir -p ~/temp/merged
while IFS= read -d '' f; do
echo "$f"
cp "$f" ~/temp/merged
done < <(find . -iname "*.jpg" -type f -print0)