list.txt
아래와 같이 한 줄에 파일 이름을 나열했습니다.
filename1.pdf
file456.pdf
file33.txt
.......
디렉터리(소스의 모든 하위 폴더 포함)에서 파일 이름으로 검색하여 대상 디렉터리(모두 하나의 디렉터리에 있음)에 복사하고 싶습니다.
rsync -a /var/www/html/source-directory --files-from=/home/directory/list.txt /var/www/html/target-directory
명령은 제대로 작동하지만 폴더 내가 아닌 소스 디렉터리만 검색합니다.
답변1
이건 필요하지 않습니다 rsync
. 각 파일에 대해 해당 파일을 찾아 대상에 복사해야 합니다.
src='/var/www/html/source-directory'
dst='/var/www/html/target-directory'
while IFS= read -r file
do
echo "Checking '$file'" >&2
find "$src" -type f -name "$file" -exec cp -a {} "$dst/" \;
done <list.txt
명명된 각 파일이 하나만 있다고 보장할 수 있는 경우 일부 버전에는 각 파일의 첫 번째 일치에서 중지되도록 추가할 수 있는 옵션이 find
있습니다 .-quit