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).