【问题标题】:Create a file of given size in Linux and fill it with user data pattern在 Linux 中创建一个给定大小的文件并用用户数据模式填充它
【发布时间】:2020-11-27 19:21:54
【问题描述】:

我需要生成一个特定大小的文件,例如 4KB、128KB 等。

在 Linux 上创建一定大小文件的命令是什么?我依稀记得 DD 工具就是为这个目的服务的,比如

dd if=/dev/zero of=upload_test bs=file_size count=1.

我需要用用户模式填充创建的文件

1.) All zeroes

2.) Incremental 1 byte Data Pattern 0x00 0x01 0x02...0xFF 0x00 0x01...0x0FF ..

3.) All 1's /any fixed value

是否有任何命令行/脚本可以满足上述两个目的,即创建一个特定大小的文件并用模式填充它。

【问题讨论】:

  • 您可以使用dd 复制/dev/zero 以填充全零文件。对于另外两个,perl 可能是最好/最简单的选择。
  • 例如,您可以使用for ((i=1;i<=SIZE;i++)) ; do printf '\xDE\xAD\xBE\xEF'; done > test.bin 对于 SIZE=1024,您将获得总共 4KB 的文件。但它会很慢.. # ls -lh test.bin -rw-r--r-- 1 root root 4.0K Sep 30 12:33 test.bin # cat test.bin | hexdump 0000000 adde efbe adde efbe adde efbe adde efbe * 0001000

标签: linux shell command-line vi dd


【解决方案1】:

perl 几乎可以肯定是正确的工具。我的perl(可悲)有点生疏了,当然有更好的方法可以做到这一点,但是一个简单的方法(对于您的选项 2)将类似于:

$ count=2048; perl -e 'print pack("c", $x++ % 256) foreach (0..'$count')'

【讨论】:

  • 谢谢..我在哪里指定上面脚本中创建的文件名?
  • 重定向输出。例如perl ... > output-file
  • 在生成 133120 字节的文件并发出上述命令后出现 synatx 错误。ivl@ivl-Inspiron-5721:~$ $ count=2048; perl -e 'print pack("c", $x++ % 256) foreach (0..'$count')' $: command not found syntax error at -e line 1, near "..)" 执行 -e由于编译错误而中止。
  • $ 不是您应该发出的命令,而是您的提示。如果你没有成功设置count(你没有成功设置,因为你在无效命令$的参数中进行了赋值),你会从perl得到语法错误。
猜你喜欢
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 2011-08-29
  • 2010-09-13
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多