linux下将文件从一个路径复制到另一个路径

linux下将文件从一个路径复制到另一个路径

我正在尝试将文件从一个路径复制到另一个路径。我有一个文本文件,其中包含以下模式的所有文件的名称:

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

.sh使用以下代码创建了一个文件:

 #!/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

上面的代码仅将文本中的最后一个文件名复制到目标路径,而不是全部复制。

答案1

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

cd "$fromPath" && xargs mv -t "$toPath" < "$file"

答案2

rsync如果您还不熟悉的话,您可以看一下。这看起来像是一个实际上不需要自己的脚本的问题。

看一看这里,或使用您的 Google foo。

您需要的选项rsync可能是--files-from.

咒语rsync会是这样的:

rsync --files-from filenames.txt /root/Backup/upload /root/Desktop/custom/upload

相关内容