หากคุณต้องการย้ายไฟล์ทั้งหมดภายในลำดับชั้นไดเรกทอรีไปยังไดเรกทอรีปลายทางเดียวในทุบตี≥4 (ใส่shopt -s globstarในของคุณ~/.bashrc) หรือ zsh:
mkdir ~/new-directory
mv -i **/*.xxx ~/new-directory
ในเปลือกหอยอื่น ๆ :
mkdir ~/new-directory
find . -name '*.xxx' -exec mv -i {} ~/new-directory \;
วิธีอ่านfindคำสั่งนี้:
.: สำรวจไดเรกทอรีปัจจุบัน
-name '*.xxx': ดำเนินการกับไฟล์ที่มีชื่อตรงกับรูปแบบนี้
-exec … \;: ดำเนินการคำสั่งนี้ในแต่ละไฟล์{}โดยแทนที่ด้วยพา ธ ไปยังไฟล์
มีคำสั่งที่ซับซ้อนมากขึ้นในการใช้findที่เร็วขึ้นหากคุณมีไฟล์จำนวนมากเนื่องจากไม่จำเป็นต้องเรียกใช้mvกระบวนการแยกต่างหากสำหรับแต่ละไฟล์:
find . -name '*.xxx' -exec sh -c 'mv -i "$@" "$0"' ~/new-directory {} +
+ในตอนท้ายบอกfindเพื่อเรียกคำสั่งบนหลายไฟล์ในเวลา เนื่องจากfindสามารถใส่ชื่อไฟล์ที่ส่วนท้ายของบรรทัดคำสั่งและmvต้องการให้ไดเรกทอรีปลายทางสุดท้ายเราใช้เชลล์ระดับกลางเพื่อจัดเรียงอาร์กิวเมนต์ใหม่ ( "$0"เป็นอาร์กิวเมนต์แรกของเชลล์~/new-directoryและ"$@"เป็นอาร์กิวเมนต์ที่ตามมาที่มาจากfindกำลังขยายของ{})