모든 디렉토리에서 이름으로 파일을 찾고 rsync를 사용하여 다른 디렉토리에 복사

모든 디렉토리에서 이름으로 파일을 찾고 rsync를 사용하여 다른 디렉토리에 복사

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

관련 정보