Adicionando um carimbo de data / hora ao mover um arquivo no bash [duplicado]

3
#!/bin/bash
while read server <&3; do   #read server names into the while loop    
 if [[ ! $server =~ [^[:space:]] ]] ; then  #empty line exception
    continue
 fi   
echo "Connecting to - $server"
#ssh "$server"  #SSH login
    while read updatedfile <&3 && read oldfile <&4; do     
        echo Comparing $updatedfile with $oldfile
        if diff "$updatedfile" "$oldfile" >/dev/null ; then
            echo The files compared are the same. No changes were made.
        else
            echo The files compared are different.
            # copy the new file and put it in the right location
            # make a back up of the old file and put in right location (time stamp)
            # rm the old file (not the back up)
            #cp -f -v $newfile

                mv $oldfile /home/u0146121/backupfiles/$oldfile_$(date +%F-%T)

        fi 

    done 3</home/u0146121/test/newfiles.txt 4</home/u0146121/test/oldfiles.txt
done 3</home/u0146121/test/servers.txt

Este é todo o meu script

mv $oldfile /home/u0146121/backupfiles/$_$(date +%F)

Isso move o arquivo corretamente, mas ele remove o nome do arquivo e adiciona apenas a data. Quero manter o nome do arquivo original e adicionar a data atual ao nome do arquivo.

    
por mkrouse 11.07.2013 / 16:37

1 resposta

4

Experimente mv $oldfile $dest_dir/$oldfile_$(date +%F-%T) .

mv $oldfile /home/u0146121/backupfiles/$_$(date +%F) funciona em um one-liner se você substituir manualmente $oldfile pelo nome do arquivo, mas se você estiver referenciando especificamente a variável $oldname , $ ignorará $oldfile como um argumento e voltar para a história para obter o último argumento.

    
por 11.07.2013 / 16:54