Estou tentando escrever um script "zelador" que será executado como um cron
trabalho em um diretório específico. É suposto criar uma pasta de arquivo com a data de criação no nome e, em seguida, localizar e mover todos os arquivos de um determinado tipo para esta nova pasta.
Aqui está meu código de teste:
#!/bin/bash
today=$(date +'%m:%d:%Y')
target="Archived-$today"
mkdir -p $target
find . -type f -name "*.zip" -exec mv -i {} /$target \;
Ele consegue criar a pasta corretamente, mas não consegue mover os arquivos que encontra para a pasta. Tenho feito isso apenas como um pequeno teste, e tanto o script quanto os arquivos foram criados pelo mesmo usuário. Se eu adicionar sudo
no início ele tenta mover os arquivos, mas em vez disso o que acontece é que ele apenas exclui os arquivos do diretório atual, mas não os coloca no diretório recém-criado.
Não estou tentando mover arquivos .zip. Apenas um exemplo.
Eu tentei ter chmod 777
arquivos e pastas. A mesma coisa acontece.
Estou executando o Ubuntu 14.04 LTS.
Se houver uma maneira muito melhor de fazer isso, por favor me diga.
Qualquer indicação na direção certa seria muito apreciada.
Editar
Agora funciona.
Atualizei a find
declaração para:
find . -maxdepth 1 -type f -name "*.zip" -exec mv -t "$target/" {} \;
Responder1
encontre arquivos no diretório atual e não nos subdiretórios:
find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \;
excluir método dirs:
find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \;
Observe que isso excluirá apenas o arquivo de hoje, enquanto você terá outro arquivo, recomendo o primeiro comando ou crie archive-dirs fora do diretório principal!