Как я могу создать 1 000 файлов, которые я могу использовать для тестирования сценария?

Я хотел бы создать 1000 + текстовые файлы с некоторым текстом для тестирования сценария, как создать это очень если текстовые файлы в движении с помощью сценария оболочки или Perl. Мог любой помогать мне.

10
задан Cherian 18 January 2010 в 17:27
поделиться

8 ответов

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")
9
ответ дан 3 December 2019 в 15:51
поделиться

Я полагаю, что следующий трюк:

SELECT t1.a, (SELECT t2.b FROM t2 WHERE t2... = t1...) AS b FROM t1 LIMIT 5
-121--4817889-
SELECT t3.a, t2.b FROM (SELECT * FROM t1 LIMIT 5) t3
LEFT JOIN t2 ON ...

Обратите внимание, что если вы используете ограничение без предложения «order by», не определено, какие 5 строк вы получите. Попробуйте добавить предложение order by, если это не то, что вы хотите.

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

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

6
ответ дан 3 December 2019 в 15:51
поделиться

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

#!/usr/bin/python

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

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

1
ответ дан 3 December 2019 в 15:51
поделиться

Всем интересующимся:

Я портировал код Эда Ануффа на цель С. Источник дополнен примером. Вы можете загрузить его здесь .

Возможно, Эд может проверить это (я надеюсь, что я не сделал слишком много ошибок) и добавить его в свой репозиторий git.

-121--4155183-

Вы можете получить SIGBUS от неориентированного доступа, если вы включите ловушку неориентированного доступа, но обычно она выключена на x86. Вы также можете получить доступ к устройству, подключенному к памяти, если есть какая-то ошибка.

Лучше всего использовать отладчик для идентификации команды сбоя (SIGBUS является синхронным) и пытаться увидеть, что он пытался сделать.

-121--2303414-

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

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

0
ответ дан 3 December 2019 в 15:51
поделиться

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

#!/usr/bin/perl

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

write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;
3
ответ дан 3 December 2019 в 15:51
поделиться

Вы можете использовать только 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
ответ дан 3 December 2019 в 15:51
поделиться

В 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-кадров, таких как это.

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

4
ответ дан 3 December 2019 в 15:51
поделиться
#!/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
2
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: