ฉันต้องการที่จะสามารถค้นหาไฟล์ในช่วง 14 วันและนานกว่า 10k และกว่า rsync ที่พบไฟล์ไปยังปลายทาง
มีวิธีรวมคำสั่งทั้งสองนี้หรือไม่?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
ฉันต้องการที่จะสามารถค้นหาไฟล์ในช่วง 14 วันและนานกว่า 10k และกว่า rsync ที่พบไฟล์ไปยังปลายทาง
มีวิธีรวมคำสั่งทั้งสองนี้หรือไม่?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
คำตอบ:
คุณสามารถส่งผลลัพธ์การค้นหาลงใน rsync โดยใช้หนึ่งในตัวเลือกที่ระบุไว้ด้านล่าง
ตัวเลือกทั้งสองนี้มีความคล้ายคลึงกันมากพวกเขาทั้งสองคิดว่าคุณกำลังเปลี่ยนไดเรกทอรีไปยังบางตำแหน่งแล้วเรียกใช้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
วิธีนี้สามารถเรียกใช้ได้จากทุกที่
$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
| rsync --files-from=- --from0 /src/dir/ /dst/dir/
printf %P
: ชื่อไฟล์ที่มีชื่อของอาร์กิวเมนต์บรรทัดคำสั่งที่พบไฟล์นั้น ด้วยวิธีนี้คุณสามารถใช้ไดเรกทอรี src ใด ๆ ไม่จำเป็นต้อง cd ลงในไดเรกทอรี src ของคุณก่อน