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=24
bs=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