Tenho certeza de que você já os encontrou, mas os dois melhores lugares para começar a aprender o bash scripting são os Guia do Bash para iniciantes e o Guia avançado de script de script . Se você ainda não viu esses dois recursos, eu recomendo que você os marque, se você quiser fazer mais scripts de bash.
Parte removida referente ao controle de fluxo devido à edição em questão. O comando find precisa de -exec
antes do comando, senão não saberá que mv
é realmente um comando que você está tentando executar nos arquivos. Além disso, o {}
no find é usado para se referir aos resultados do comando find, assim você não precisará do $source
como parte do find. O comando find provavelmente se pareceria mais com:
find $source -mtime +$days -exec mv {} $destination \;
Se os resultados da busca incluírem arquivos / diretórios com espaços neles, talvez seja necessário percorrer os resultados (o que trará o do / done de volta para a mistura) para que você possa incluir os resultados da pesquisa em uma variável que pode então ser incluída entre aspas. Isso dará uma estrutura semelhante à seguinte:
for result in $(find $soure -mtime +$days)
do
mv "${result}" $destination
done
Se você ainda estiver com problemas, sugiro que você inclua uma cópia da sua janela de terminal ao executar o script. Além disso, tente executar apenas o comando find sem as porções -exec mv...
e substituindo as variáveis pelo que você normalmente preenche para elas durante a execução do script. Dessa forma, você pode ter uma ideia do que o comando find está correspondendo, para que você possa ter certeza de que ele corresponde aos arquivos desejados antes de fazer qualquer alteração no local dos arquivos.