如何创建一个用固定字符串初始化的固定大小的文件?

时间:2014-04-25 09:50:23

标签: bash shell

我想创建一个固定大小的文件,其中填充了我选择的重复字符串。

到目前为止,我已尝试使用dd创建文件,如下所示:

dd if=/dev/urandom of=foo_200kb bs=1024 count=200

但显然文件的内容是随机的。如何用我选择的字符串填充文件?

注意: 接受的答案适用于使用busybox shell(灰)的人 他们可以运行以下命令来获得类似的结果

yes foo | tr -d '\n' | dd of=foo_200kb bs=1024 count=200

3 个答案:

答案 0 :(得分:3)

您可以使用流程替换:

dd if=<(yes foo) of=foo_200kb bs=1024 count=200

答案 1 :(得分:2)

您可以创建一个bash脚本来执行您需要的操作:

#! /bin/bash
word=$1
size=$2
length=${#word}
(( remainder = size % length ))
if (( remainder )) ; then
    echo Warning: Truncating the last word >&2
fi

(( repeat = size / length ))
for (( i=0; i < repeat ; i++ )) ; do
    echo -n "$word"
done
echo -n ${word:0:remainder}

使用fill.sh bar 204800 > foo

进行调用

答案 2 :(得分:2)

您可以在printfhead使用大括号展开:

$ printf '%.0sbar' {1..100000} | head -c 200000 > foo
$ wc -c foo
200000 foo

我绝对更喜欢dd解决方案。