Copiando o arquivo de um diretório para outro diretório com base no timestamp

1

Precisa obter o arquivo de um diretório para outro diretório com base no registro de data e hora do arquivo.

/Directory1  - From directory
TEMP-dummy-20160812-1149.200476.xml
TEMP-dummy-20160812-1151.000000.xml
TEMP-dummy-20160812-1152.000000.xml

Eu preciso copiar o arquivo para o qual o registro de data e hora é maior que 20160812-1150.000000 .

Observação: o timestamp 20160812-1150.000000 estará presente em um arquivo estático.

O resultado esperado:

/Directory2
TEMP-dummy-20160812-1151.000000.xml
TEMP-dummy-20160812-1152.000000.xml
    
por Abdhula 09.09.2016 / 16:44

2 respostas

0
cd /Path/to/Directory1
ref_timestamp=201608121150000000 # punctuation marks deliberately removed.
for file in *
do
  timestamp=$(echo ${file} | cut -c 12-31 | tr -cd [:digit:])
  if [ ${timestamp} -ge ${ref_timestamp} ]
  then
    cp ${file} /Path/to/Directory2
  fi
done

Este trecho de código pressupõe que você está usando tr do GNU Coreutils, não um estoque tr que vem com sistemas Unix herdados, como Sun Solaris, AIX ou HP-UX.

    
por 09.09.2016 / 17:07
3

com zsh :

cd /dir1 &&
  mv TEMP-dummy-*(e:'[[ $REPLY > TEMP-dummy-20160812-1150.000000 ]]':) /dir2

POSIXly e assumindo que todos esses arquivos seguem esse padrão:

cd /dir1 &&
  printf '%s\n' TEMP-dummy-* |
    awk '$0 > "TEMP-dummy-20160812-1150.000000"' |
    xargs sh -c '[ "$#" -eq 0 ] || exec mv "$@" /dir2' sh
    
por 09.09.2016 / 17:15

Tags