file=/path/to/filenames.txt
fromPath=/root/Backup/upload/
toPath=/root/Desktop/custom/upload/
cd "$fromPath" && xargs mv -t "$toPath" < "$file"
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.
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
Tags bash shell-script file-copy