example.fileฉันต้องการที่จะสร้างไฟล์ที่มีชื่อ ฉันสามารถใช้
touch example.fileแต่ฉันต้องการไฟล์ที่มีขนาด 24MB ฉันตรวจสอบ manpage of touch แล้ว แต่ไม่มีพารามิเตอร์เช่นนี้ มีวิธีง่ายๆในการสร้างไฟล์ที่มีขนาดที่แน่นอนหรือไม่?
example.fileฉันต้องการที่จะสร้างไฟล์ที่มีชื่อ ฉันสามารถใช้
touch example.fileแต่ฉันต้องการไฟล์ที่มีขนาด 24MB ฉันตรวจสอบ manpage of touch แล้ว แต่ไม่มีพารามิเตอร์เช่นนี้ มีวิธีง่ายๆในการสร้างไฟล์ที่มีขนาดที่แน่นอนหรือไม่?
คำตอบ:
คุณสามารถใช้ dd:
dd if=/dev/zero of=output.dat  bs=24M  count=1หรือ
dd if=/dev/zero of=output.dat  bs=1M  count=24หรือบน Mac
dd if=/dev/zero of=output.dat  bs=1m  count=24bs=1G count=1
                    dd if=/dev/zero of=output.dat  bs=24m  count=1
                    mด้วย
                    ภายใต้ Linux หรือ Cygwin ที่ไม่ได้ฝัง (หรือระบบใด ๆ ที่มี GNU coreutils) และ FreeBSD:
truncate -s 24m example.fileสิ่งนี้จะสร้างไฟล์ที่เต็มไปด้วย null null หากไฟล์มีอยู่แล้วและมีขนาดเล็กกว่าไฟล์นั้นจะถูกขยายเป็นขนาดที่ร้องขอด้วยค่า null หากไฟล์มีอยู่แล้วและมีขนาดใหญ่กว่าจะถูกตัดทอนขนาดที่ร้องขอ
ไบต์ null ไม่กินพื้นที่ดิสก์ใด ๆ แฟ้มเป็นไฟล์เบาบาง
ในหลายระบบให้head -c 24m </dev/zero >example.fileสร้างไฟล์แบบไม่กระจายข้อมูลเต็มจำนวนไบต์ที่ว่าง หากheadไม่มี-cตัวเลือกในระบบของคุณ (เป็นเรื่องปกติ แต่ไม่ใช่ใน POSIX) คุณสามารถใช้dd bs=1024k count=24 </dev/zero >example.fileแทน (นี่เป็นไปตาม POSIX)
หากคุณไม่สนใจเนื้อหาของไฟล์นี่จะเร็วกว่าการใช้dd:
fallocate -l 24M filenameเห็นได้ชัดว่าการใช้ddไฟล์ขนาด 24MB จะไม่ใช้เวลากับระบบที่ทันสมัย แต่ไฟล์ที่มีขนาดใหญ่กว่าอาจช้าลงอย่างเห็นได้ชัด
คุณสามารถใช้ dd:
dd if = / dev / zero of = outputfile.out bs = 1024k count = 24
หรือในกรณีที่คุณใช้งานโซลาริส
mkfile 24m outputfile.out-nต่อเพื่อสร้างไฟล์ที่กระจัดกระจาย
                    FROM_NODE=N01;
echo; cd $MOUNT_PATH; pwd; ls -la; sleep 1; echo;
WHEN="$(date +%Y-%m-%d_%H-%M-%S)";
fallocate -l 10M $MOUNT_PATH/"$FROM_NODE"_"$WHEN".dump
ls -lha; echo;
fallocateอาจเป็นคำตอบที่ดี แต่ทำไมบรรทัดอื่น ๆ ลดคำตอบลงเพื่อให้เป็นไปตามที่ขอและไม่เหลืออะไรอีกแล้ว
                    fallocate -l 10M somefile.dump