Find
按名稱在所有目錄中查找文件並使用 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
這個命令工作正常,但它只搜尋源目錄,而不是文件夾內。
你不需要
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
您可以附加的選項,以便它在每個文件的第一次匹配時停止。