Как я могу создать 1000 файлов, которые я могу использовать для тестирования скрипта? - PullRequest
10 голосов
/ 18 января 2010

Я хотел бы создать более 1000 текстовых файлов с некоторым текстом, чтобы протестировать скрипт, как создать это много, если текстовые файлы в движении, используя скрипт оболочки или Perl Пожалуйста, кто-нибудь может мне помочь.

Ответы [ 9 ]

9 голосов
/ 18 января 2010
for i in {0001..1000}
do
  echo "some text" > "file_${i}.txt"
done

или если вы хотите использовать Python <2.6 </p>

for x in range(1000):
    open("file%03d.txt" % x,"w").write("some text")
6 голосов
/ 18 января 2010
#!/bin/bash
seq 1 1000 | split -l 1 -a 3 -d - file

Выше будет создано 1000 файлов, каждый файл имеет номер от 1 до 1000. Файлы будут называться file000 ... file999

4 голосов
/ 18 января 2010

В 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 строки? Потому что это хорошая практика, поэтому я использую их даже в таких программах, как эти.

С уважением, Предложение

3 голосов
/ 18 января 2010

Для разнообразия:

#!/usr/bin/perl

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

write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;
2 голосов
/ 18 января 2010
#!/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
1 голос
/ 30 января 2013

Просто возьмите любой большой файл, имеющий более 1000 байтов (для 1000 файлов с контентом). На вашем компьютере их много. Затем выполните (например):

split -n 1000 /usr/bin/firefox

Это мгновенно быстро.

или файл большего размера:

split -n 10000 /usr/bin/cat

Это заняло всего 0,253 секунды для создания 10000 файлов.

Для файлов 100 КБ:

split -n 100000 /usr/bin/gcc

Только 1,974 секунды для файлов размером 100 Кбайт по 5 байт каждый.

Если вам нужны только файлы с текстом , посмотрите каталог / etc. Создайте миллион текстовых файлов с почти случайным текстом:

split -n 1000000 /etc/gconf/schemas/gnome-terminal.schemas

20,203 секунды для файлов размером 1 МБ по 2 байта в каждом. Если вы разделите этот большой файл только на 10 тыс. Частей, это займет всего 0,220 секунды, а каждый файл имеет 256 байтов текста.

1 голос
/ 18 января 2010

Вы можете использовать только 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".

1 голос
/ 18 января 2010

Я не знаю, в оболочке или Perl, но в Python будет:

#!/usr/bin/python

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

Я думаю, довольно просто, что он делает.

0 голосов
/ 19 января 2010

Вот короткая программа Perl для командной строки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...