movendo a pasta com mais de 30 dias para outra pasta

0

Eu tenho um diretório que tem pastas do dia a dia e cada pasta tem 1000 imagens nela. Quero arquivar pastas com mais de 30 dias para a pasta archeive.

Eu tentei isso e ele bugged tudo, ele copiou todos os arquivos de imagem para a pasta archeive em vez da pasta de data.

sudo find /home/lanein1/AshtonRPOUT/ -type f -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;

  meuscriptcopioutodasasimagensparaoarcoemvezdepastasseparadas..

    
por preethi 08.09.2015 / 10:44

2 respostas

4

Você queria encontrar o diretório, mas está procurando um arquivo simples ( f ). Use d para pesquisa de diretório:

sudo find /home/lanein1/AshtonRPOUT/ -type d -mtime +30 -exec mv '{}' /home/lanein1/AshtonRPOUT/Arch/ \;
    
por 08.09.2015 / 11:01
0

Para mover todos os diretórios em /home/lanein1/AshtonRPOUT/ com um tempo de modificação de 30 dias, mas sem alterar o diretório mais alto ( /home/lanein1/AshtonRPOUT/ ), use

find /home/lanein1/AshtonRPOUT/ -mindepth 1 -maxdepth 1 -type d \
    ! -path '/home/lanein1/AshtonRPOUT/Arch*' -mtime +30 \
    -exec mv {} /home/lanein1/AshtonRPOUT/Arch/ ';' -prune

Coisas para anotar aqui:

  • Estamos procurando diretórios, não arquivos, por isso usaremos -type d .

  • O diretório de destino está incluído no conjunto de diretórios pesquisados por find , portanto, usamos ! -path '...' para evitar esse caminho.

  • Você não quer tentar mover o diretório principal, então adicionamos -mindepth 1 para começar a procurar abaixo desse caminho. Da mesma forma, -maxdepth 1 força find a não descer nas subpastas (você diz que tem subpastas e que elas contêm apenas arquivos).

  • (Isso não é necessário aqui, já que usamos -maxdepth 1 , mas ...) Mover um diretório alterará a estrutura do diretório. Portanto, adicionamos -prune no final. Isso remove o caminho movido da lista de diretórios que find considerará. Sem isso, find tentaria inserir diretórios inexistentes (se um diretório foi encontrado e movido).

por 15.06.2018 / 12:01

Tags