หากฉันมีไดเรกทอรีที่มีไฟล์บางไฟล์ที่ชื่อมีช่องว่างเช่น
$ ls -1 dir1
file 1
file 2
file 3
ฉันสามารถคัดลอกทั้งหมดไปยังไดเรกทอรีอื่นเช่นนี้ได้สำเร็จ:
$ find dir1 -mindepth 1 -exec cp -t dir2 {} +
อย่างไรก็ตามการส่งออกของfind dir1 -mindepth 1
มีช่องว่างที่ไม่หนี:
$ find dir1 mindepth 1
dir1/file 1
dir1/file 3
dir1/file 3
หากฉันใช้print0
แทนprint
เอาต์พุตยังคงมีช่องว่างที่ไม่ได้ใช้ Escape:
$ find dir1 mindepth 1 -print0
dir1/file 1dir1/file 2dir1/file 3
หากต้องการคัดลอกไฟล์เหล่านี้ด้วยตนเองโดยใช้cp
ฉันจะต้องหลีกเลี่ยงช่องว่าง แต่ดูเหมือนว่าสิ่งนี้ไม่จำเป็นเมื่อcp
มีการบอกกล่าวมาfind
โดยไม่คำนึงว่าฉันจะใช้+
หรือ\;
ท้ายคำสั่ง
อะไรคือเหตุผลนี้
find..exec
สามารถจัดการกับชื่อไฟล์แปลกในตัวเอง ..