如何创建可用于测试脚本的1000个文件?

时间:2010-01-18 09:00:38

标签: python perl shell scripting

我想创建1000多个文本文件,其中包含一些文本来测试脚本,如果使用shell脚本或Perl一起创建文本文件,如何创建这么多。请任何人帮助我。

9 个答案:

答案 0 :(得分:9)

for i in {0001..1000}
do
  echo "some text" > "file_${i}.txt"
done

或者如果你想使用Python< 2.6

for x in range(1000):
    open("file%03d.txt" % x,"w").write("some text")

答案 1 :(得分:6)

#!/bin/bash
seq 1 1000 | split -l 1 -a 3 -d - file

上面将创建1000个文件,每个文件的编号从1到1000.文件名为file000 ... file999

答案 2 :(得分:4)

Perl:

use strict;
use warnings;

for my $i (1..1000) {
   open(my $out,">",sprintf("file%04d",$i));
   print $out "some text\n";
   close $out;
}

为什么前两行?因为它们是很好的练习所以我甚至在像这样的一次性程序中使用它们。

此致 报价

答案 3 :(得分:3)

对于多样性:

#!/usr/bin/perl

use strict; use warnings;
use File::Slurp;

write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;

答案 4 :(得分:2)

#!/bin/bash

for suf in $(seq -w 1000)
do
        cat << EOF > myfile.$suf
        this is my text file
        there are many like it
        but this one is mine.
EOF
done

答案 5 :(得分:1)

我不知道shell或perl但是在python中会是:

#!/usr/bin/python

for i in xrange(1000):
    with open('file%0.3d' %i,'w') as fd:
        fd.write('some text')

我认为它的作用非常简单。

答案 6 :(得分:1)

您只能使用没有外部的Bash,仍然可以填充数字,以便正确排序文件名(如果需要):

read -r -d '' text << 'EOF'
Some text for
my files
EOF

for i in {1..1000}
do
    printf -v filename "file%04d" "$i"
    echo "$text" > "$filename"
done

Bash 4可以这样做:

for filename in file{0001..1000}; do echo $text > $filename; done

两个版本都生成文件名,如“file0001”和“file1000”。

答案 7 :(得分:1)

只需获取超过1000个字节的任何大文件(包含1000个带内容的文件)。你的电脑上有很多。然后做(例如):

split -n 1000 /usr/bin/firefox

这很快就会出现。

或更大的文件:

split -n 10000 /usr/bin/cat

创建10000个文件只需 0.253秒

对于100k文件:

split -n 100000 /usr/bin/gcc

对于100k文件,只有 1.974秒,每个文件大约5个字节。

如果您只想要带文字的文件,请查看您的/ etc目录。使用几乎随机文本创建一百万个文本文件:

split -n 1000000 /etc/gconf/schemas/gnome-terminal.schemas
对于每个大约2个字节的1M文件,

20.203秒。如果将这个大文件分成10k个零件,则只需0.220秒,每个文件有256个字节的文本。

答案 8 :(得分:0)

这是一个简短的命令行Perl程序。

perl -E'say $_ $_ for grep {open $_, ">f$_"} 1..1000'