【发布时间】:2011-01-06 06:57:31
【问题描述】:
我想创建 1000 多个带有一些文本的文本文件来测试脚本,如果使用 shell 脚本或 Perl 一次创建文本文件,如何创建这么多。请问谁能帮帮我?
【问题讨论】:
-
你能创建一个文本文件吗?你能设计一个方案来生成文件名,例如。文件0001,文件002?你能写一个for循环来完成这两个任务吗?你在什么时候卡住了?
标签: python bash shell perl scripting
我想创建 1000 多个带有一些文本的文本文件来测试脚本,如果使用 shell 脚本或 Perl 一次创建文本文件,如何创建这么多。请问谁能帮帮我?
【问题讨论】:
标签: python bash shell perl scripting
for i in {0001..1000}
do
echo "some text" > "file_${i}.txt"
done
或者如果你想使用 Python
for x in range(1000):
open("file%03d.txt" % x,"w").write("some text")
【讨论】:
echo "some text" > file$file
#!/bin/bash
seq 1 1000 | split -l 1 -a 3 -d - file
上面将创建 1000 个文件,每个文件的编号从 1 到 1000。这些文件的名称将从 file000 到 file999。
【讨论】:
在 Perl 中:
use strict;
use warnings;
for my $i (1..1000) {
open(my $out,">",sprintf("file%04d",$i));
print $out "some text\n";
close $out;
}
为什么是前 2 行?因为它们是很好的练习,所以我什至在像这样的 1-shot 程序中也使用它们。
问候, 提供
【讨论】:
use autodie;
品种:
#!/usr/bin/perl
use strict; use warnings;
use File::Slurp;
write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;
【讨论】:
#!/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
【讨论】:
我不知道在 shell 或 perl 中,但在 python 中会是:
#!/usr/bin/python
for i in xrange(1000):
with open('file%0.3d' %i,'w') as fd:
fd.write('some text')
我认为它的作用非常简单。
【讨论】:
from __future__ import with_statement(系统吃掉了ghostdog74的评论中的下划线)。
您可以只使用没有外部的 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”这样的文件名。
【讨论】:
只要取任何超过 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 个文件,每个文件大约 5 个字节,只有 1.974 秒。
如果您只想要带有文本的文件,请查看您的 /etc 目录。创建一百万个包含几乎随机文本的文本文件:
split -n 1000000 /etc/gconf/schemas/gnome-terminal.schemas
1M 文件大约 20.203 秒,每个文件大约 2 个字节。如果你把这个大文件分成 10k 部分,只需要 0.220 秒,每个文件有 256 个字节的文本。
【讨论】:
split 无法识别 -n;它的 BSD (Mac OS X) 版本也不识别它。我只需要升级我的 CoreUtils 安装。
这是一个简短的命令行 Perl 程序。
perl -E'say $_ $_ for grep {open $_, ">f$_"} 1..1000'
【讨论】: