Bash
查找和同步?
我希望能夠搜尋超過 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 目錄。參考