como copiar a pasta “test” para outra pasta com o numero icreased test1, test2 test3

0

Eu sou muito novo nisso, mas estou progredindo todos os dias.

Eu estou um pouco stuk agora ...

O que eu quero fazer é o seguinte:

Copie a pasta / teste para outra pasta chamada / test

Mas o que eu gostaria de fazer é quando toda vez que eu executar o comando "copy", eu gostaria que ele checasse se a pasta / test já existe, se assim for, aumente um número no nome da pasta, como / test1 , / test2 etc etc .. e começar de novo se, por exemplo test10 for atingido.

Qual é o melhor método para fazer isso?

    
por Björn 18.02.2018 / 11:49

1 resposta

1

Supondo que você tenha uma pasta chamada test, escreva um script de shell copytest com o seguinte conteúdo:

#!/bin/bash

i=1
while true
do
    if [ -d test$i ]
    then
        i=$((i+1))
    else
        cp -r test test$i
        break
    fi
    if [ $i -eq 11 ]
    then
        rm -r test{1..10}
        cp -r test test1
        break
    fi
done

Agora torne-o executável com chmod u+x copytest e cada vez que você chamar ./copytest , receberá uma nova cópia chamada test<n> .

Explicação:

  • [ -d test$i ] verifica se já existe um teste de pasta $ i
  • break sai do loop infinito iniciado por while true .
  • A décima primeira chamada excluirá todas as cópias e começará novamente com test1.

Isso faz o que você pediu em sua pergunta (crie mais e mais cópias do teste). Se você quer que as cópias "sigam" em cada chamada (ou seja, test10 é descartado, test9 torna-se test10, etc.) então você deve dar uma olhada no comando logrotate como sugerido por @ Jean-Marie no primeiro comentário.

    
por muclux 18.02.2018 / 15:59