Find

按名稱在所有目錄中查找文件並使用 rsync 複製到另一個目錄

  • February 18, 2021

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您可以附加的選項,以便它在每個文件的第一次匹配時停止。

引用自:https://unix.stackexchange.com/questions/634994