copia arquivos de um caminho para outro caminho no linux

1

Estou tentando copiar arquivos de um caminho para outro. Eu tenho um arquivo de texto que tem todos os nomes de arquivos no seguinte padrão:

file-1.txt
file-2.pdf
file-3.ppt
....

Eu criei um arquivo .sh com o seguinte código:

 #!/bin/bash
file='cat filenames.txt';
fromPath='/root/Backup/upload/';
toPath='/root/Desktop/custom/upload/';
for i in $file;
do
 filePath=$fromPath$i
 #echo $filePath
 if [ -e $filePath ];
 then
   echo $filePath
   yes | cp -rf $filePath $toPath
 else
   echo 'no files'
 fi
done

O código acima está copiando apenas o último nome de arquivo do texto em vez de todos para o caminho de destino.

    
por Mr_Green 08.04.2014 / 12:08

2 respostas

3
file=/path/to/filenames.txt
fromPath=/root/Backup/upload/
toPath=/root/Desktop/custom/upload/

cd "$fromPath" && xargs mv -t "$toPath" < "$file"
    
por 08.04.2014 / 13:10
1

Você pode dar uma olhada em rsync , se ainda não estiver familiarizado com isso. Isso parece um problema que não deveria exigir um script próprio.

Dê uma olhada aqui ou use seu Google foo.

A opção rsync que você precisa é provavelmente --files-from .

O encantamento de rsync será algo como:

rsync --files-from filenames.txt /root/Backup/upload /root/Desktop/custom/upload
    
por 08.04.2014 / 13:27