Я хотел бы создать 1000 + текстовые файлы с некоторым текстом для тестирования сценария, как создать это очень если текстовые файлы в движении с помощью сценария оболочки или Perl. Мог любой помогать мне.
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")
Я полагаю, что следующий трюк:
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
Я не знаю в Shell или Perl, но в Python будет:
#!/usr/bin/python
for i in xrange(1000):
with open('file%0.3d' %i,'w') as fd:
fd.write('some text')
Я думаю, что это довольно просто, что это делает.
Всем интересующимся:
Я портировал код Эда Ануффа на цель С. Источник дополнен примером. Вы можете загрузить его здесь .
Возможно, Эд может проверить это (я надеюсь, что я не сделал слишком много ошибок) и добавить его в свой репозиторий git.
-121--4155183-Вы можете получить SIGBUS от неориентированного доступа, если вы включите ловушку неориентированного доступа, но обычно она выключена на x86. Вы также можете получить доступ к устройству, подключенному к памяти, если есть какая-то ошибка.
Лучше всего использовать отладчик для идентификации команды сбоя (SIGBUS является синхронным) и пытаться увидеть, что он пытался сделать.
-121--2303414-Вот короткая программа Perl командной строки.
perl -E'say $_ $_ for grep {open $_, ">f$_"} 1..1000'
Для разнообразия:
#!/usr/bin/perl
use strict; use warnings;
use File::Slurp;
write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;
Вы можете использовать только 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".
В 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-кадров, таких как это.
С уважением, Предложение
#!/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