คุณสามารถย้ายไฟล์จัดลำดับความสำคัญของไฟล์ขนาดเล็กได้หรือไม่?


0

เป็นไปได้ไหมที่จะย้ายไฟล์ตามขนาด

ชอบ:

mv /path/to/x /path/to/y

โดยที่ x และ y เป็นไดเรกทอรี อย่างไรก็ตามไฟล์ที่มีขนาดเล็กกว่าจะถูกย้ายก่อน หรือไฟล์ที่ใหญ่กว่าก่อน

นอกจากนี้ยังมีเหตุผลที่จะไม่ทำเช่นนี้หรือไม่?


1
มันไม่ได้ทำเพียงเล็กน้อย มีเหตุผลที่จะทำเช่นนี้?
Daniel Andersson

คำตอบ:


1

คุณสามารถทำได้เช่นนี้ (ยังไม่ทดลอง):

for file in `ls --sort=size /path/to/x/*`; do mv $file /path/to/y/; done

คุณสามารถกลับรายการเรียงลำดับโดยเพิ่มพารามิเตอร์ --reverse ไปยัง ls หากชื่อไฟล์มีช่องว่างคุณอาจต้องอ้างถึง $ file:

... mv "$file" /path/to/y/ ...

หากชื่อไฟล์อาจมีเครื่องหมายคำพูดคู่แสดงว่าคุณกำลังมีปัญหา

อาจเป็นไปได้ว่าสิ่งต่อไปนี้สามารถใช้งานได้ แต่ขึ้นอยู่กับการใช้ mv และอาจไม่ทำงานกับไฟล์จำนวนมาก (และยังคงมีปัญหาเกี่ยวกับช่องว่างและ / หรือเครื่องหมายคำพูดในชื่อไฟล์):

mv `ls --sort=size /path/to/x/*` /path/to/y/

คุณถามว่า: "มีเหตุผลที่จะไม่ทำเช่นนี้หรือไม่" คำถามควรกลับรายการ มีเหตุผลในการทำเช่นนี้หรือไม่? หากคุณมีเหตุผลไปข้างหน้าและทำมัน


1

หากคุณกำลังย้ายไฟล์ภายในระบบไฟล์เดียวดังนั้นข้อมูลในไฟล์จะไม่ถูกย้าย - เฉพาะชื่อของไฟล์ที่จะถูกย้ายระหว่างไดเรกทอรี ดังนั้นคุณสามารถย้ายไฟล์ 10 กิกะไบต์ได้ทันที (ภายในระบบไฟล์เดียว) ดังนั้นการไปที่ปัญหาในการค้นหาขนาดของไฟล์ทั้งหมดเพื่อให้ไฟล์ที่มีขนาดเล็กที่สุดสามารถย้ายได้ก่อนจะเสียเวลา (ในกรณีนี้)


0

เหตุผลที่จะไม่ทำเช่นนั้นก็คือจะต้องให้คุณสร้างดัชนีของไฟล์ทั้งหมดก่อนที่จะย้าย จากนั้นรับขนาดของไฟล์ทั้งหมดและจัดเรียง ก่อนที่คุณจะสามารถเริ่มทำสำเนาได้

และไม่มีการรับประกันว่าสถานะที่คุณคำนวณก่อนกระบวนการคัดลอกจะเหมือนกันทุกประการในระหว่างกระบวนการคัดลอกทำให้ไม่มีจุดหมาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.