Como você copia e move vários arquivos numéricos no Ubuntu? [fechadas]

-1

Eu tenho uma seqüência de arquivos timelapse no meu Raspberry Pi que estou tentando copiar para um cartão de memória. Eu tenho que dividir o movimento em dois lotes (pasta de origem é o dobro do tamanho da pasta de destino). Aqui está o roteiro que tenho trabalhado (o dia todo!). Eu ainda não consigo executá-lo.

cp -v /home/pi/timelapse   "201712140[20331-45246] {} /media/pi/FC33-7BFB1/timelapse

A sequência de arquivos de pastas de origem a incrementos de 15 segundos de 20171214020331 - 20171214045246 .

    
por CloudDreamR 18.12.2017 / 03:52

2 respostas

2

O comando cp pega um ou mais arquivos de origem seguidos por um destino. Se houver vários arquivos de origem (como no seu caso), o destino deve ser um diretório (para onde os arquivos serão copiados). De acordo com o comentário, você está usando indevidamente os colchetes. Eu não sei o que as chaves vão fazer, mas muito provavelmente não o que você quer. Supondo que seu primeiro arquivo de origem seja / home / pi / timelapse / 20171214020331, que os nomes de arquivos não contenham espaços e que o diretório de destino / media / pi / FC33-7BFB1 / timelapse já exista, tente

cp /home/pi/timelapse/201712140[23]* /media/pi/FC33-7BFB1/timelapse/

Se isso copia todos os arquivos a partir de 2017121402 e 2017121403, você pode mover o próximo conjunto usando [45] etc. Isso é um pouco complicado, mas você começará a sua viagem de descoberta ...

    
por Jeffrey Ross 18.12.2017 / 11:02
0

Você pode tentar copiar o arquivo, encontrando regex em um intervalo

for file in 201712140*
do
    matched="$(echo "$file" | grep -oP '(?<=201712140)([^.]+)')"
    if [[ $matched -ge 20331 && $matched -le 45246 ]]; then
        cp -v $file /your/location
    fi
done

Basta executar esse script no diretório de origem. Salve em um arquivo xyz.sh e execute bash xyz.sh

    
por partho222 18.12.2017 / 11:22