Um script para transferência de arquivos

1

Aqui está o meu script que eu criei para transferir tipos particulares de arquivos de diretórios. Eu estou lutando para encontrar uma maneira de mover o arquivo para o diretório de arquivo com o carimbo de hora atual.

#!/bin/bash
SERVER='abc.com'
USER='xyz'
PASSWD='lddkdkdkas'
find /directory/ -name ABC002*.csv | while read fname
do
   scp $fname [email protected]:~/XYZ/
   mv $fname ./archive/
done

Aqui posso mover o arquivo para arquivar, mas não consigo movê-lo com o nome alterado para nome do arquivo * timestamp.

    
por yogsma 21.09.2010 / 22:01

5 respostas

4

tente

mv $fname ./archive/$(basename $fname)-$(date +%Y%m%d-%T)

    
por 21.09.2010 / 22:20
2

Tente:

mv $fname /tmp/'basename $fname'-'date +%Y%m%d_%H%M'

Você pode usar variações deste tema se preferir carimbos de data / hora ou nomes de arquivos diferentes. Esteja ciente de que esta solução não é robusta o suficiente para lidar com vários nomes de arquivos.

    
por 21.09.2010 / 22:04
1

Adicione um nome de base à resposta da Warner:

 mv $fname ./archive/'basename $fname'-'date +%Y%m%d_%H%M'
    
por 21.09.2010 / 22:23
1

Tente isso

mv $fname ./archive/'date +%m%d%y-%T'-$fname

Existem backticks únicos à frente e depois de T Eles não aparecem no post por algum motivo

    
por 21.09.2010 / 22:11
1

Pode ser necessário usar o comando basename para remover o caminho completo do arquivo.

Além disso, você pode querer usar uma matriz para gerar uma lista de arquivos para mover mais tarde; ou até mesmo usar a opção -exec de find , algo como:

find /dir -iname BLAH -exec sh -c 'new_name=$(basename {}); scp {} user@host:dest/ && mv {} /archive/$new_name$(date..)' \;

(não esqueça o \; no final)

Essa linha arquiva o arquivo somente após ( && ) uma cópia bem-sucedida sobre o ssh.

Outra dica: talvez você queira tar dos arquivos e enviar um arquivo compactado pela rede? Isso pode economizar o tempo de handshake do ssh (e usar chaves ssh! Não salve senhas em scripts que você vai deixar por aí!)

    
por 21.09.2010 / 22:18