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

관련 정보