我已经每行列出了文件名,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
可以附加的选项,以便它在每个文件的第一个匹配处停止。