Primeiro, seu script atual é dividido em nomes de arquivos que contêm espaço em branco e outros caracteres especiais. É muito fácil corrigir isso: sempre use aspas duplas em torno de substituições de variáveis e use -exec em vez de analisar a saída de find . Veja Por que meu script de shell engasgar com espaço em branco ou outros caracteres especiais? para mais informações.
find . -name "*.mkv" -mtime -24h -exec cp {} rename/ \;
Argumentos passados para o seu script estão disponíveis nos parâmetros especiais $1 , $2 , etc. Aqui está um script que copia arquivos cuja extensão é o primeiro parâmetro para o script e cuja comparação de data e hora é dada pelo segundo parâmetro.
#!/bin/sh
find . -name "*.$1" -mtime "$2" -exec cp {} rename/ \;
Se você quiser assumir valores padrão se os argumentos estiverem faltando, você pode usar o ${…:-…} construção de expansão de parâmetro .
#!/bin/sh
find . -name "*.${1:-mkv}" -mtime "${2:--1d}" -exec cp {} rename/ \;
Eu recomendo substituir cp por cp -p ou rsync -a . cp -p preserva o registro de data e hora no arquivo, o que facilita saber quando você já copiou um arquivo. rsync -a adicionalmente não copia o arquivo se já foi copiado (a menos que o arquivo original tenha um carimbo de data / hora ou tamanho diferente).