Bash

查找和同步?

  • April 28, 2021

我希望能夠搜尋超過 14 天和超過 10k 的文件,然後將找到的文件同步到目的地。

有沒有辦法結合這兩個命令?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest

您可以使用下面列出的選項之一將 find 的輸出發送到 rsync。

方法#1

這兩個選項非常相似,它們都假設您將目錄更改為某個位置,然後find從那裡執行命令。

$ rsync -avz --remove-sent-files \
       --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

您還可以使用管道將列表輸入:

$ find ./ -mtime +14 -size +10k -print0 \
       | rsync -av --files-from=- --from0 ./ /dest

方法#2

這個方法可以在任何地方執行。

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
       | rsync -av --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: 文件名與命令行參數的名稱一起被刪除。這樣,您可以使用任何 src 目錄,無需先 cd 進入您的 src 目錄。

參考

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