domingo, 12 de novembro de 2017

Selecionando arquivos de 6 em 6 ou outros intervalos

Quando os nomes dos arquivos estão sequenciados (000, 001, 002, 003, ...) e há necessidade de alguma ação como copiar determinados arquivos para outro diretório, um script resolve o problema.

Inicialmente todos os arquivos são listados pelo comando ls *.jpg e lidos pelo while. Nomes dos arquivos: z0001.jpg, z0002.jpg, z0003.jpg, ...

A variável file armazena o nome do arquivo a partir da segunda posição e elimina ".jpg".
Por exemplo, o nome z0001.jpg torna-se 001, z0002.jpg torna-se 002 e assim por diante.

Para eu obter somente os arquivos múltiplos de 6, a variável calc armazena o resto da divisão por 6.

O comando de decisão if verifica os arquivos que são múltiplos de 6 e copia para outro diretório.

Caso queria de 5 em 5 ou qualquer outro intervalo, modifique a linha que contém a variável calc.

#!/bin/bash

ls *.jpg | { 
  while read arq 
    do
      file="`echo $arq | cut -c 2- | sed 's/.jpg//'`"
      calc=`echo "$file % 6" | bc`
      if [ $calc == 0 ]
        then
          cp -v $arq de6em6
      fi
done
}

Nenhum comentário:

Postar um comentário