한 경로에서 다른 경로로 파일을 복사하려고 합니다. 다음 패턴으로 모든 파일 이름이 포함된 텍스트 파일이 있습니다.
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