Bash

在linux中將文件從一個路徑複製到另一個路徑

  • November 24, 2018

我正在嘗試將文件從一條路徑複製到另一條路徑。我有一個文本文件,其中包含以下模式的所有文件名稱:

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

上面的程式碼僅將文本中的最後一個文件名而不是全部複製到目標路徑。

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

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

rsync如果您還不熟悉它,您可以看一下。這看起來像是一個不需要自己的腳本的問題。

看看這裡,或使用您的 Google foo。

rsync您需要的選項可能是--files-from.

咒語將rsync類似於:

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

引用自:https://unix.stackexchange.com/questions/123707