Ich würde gerne mehr als 1000 Textdateien mit etwas Text erstellen, um ein Skript zu testen, wie man so viel erstellt, wenn Textdateien auf einmal Shellskript oder Perl verwenden. Bitte könnte mir jemand helfen.Wie kann ich 1000 Dateien erstellen, mit denen ich ein Skript testen kann?
Antwort
for i in {0001..1000}
do
echo "some text" > "file_${i}.txt"
done
oder wenn Sie wollen verwenden Python < 2.6
erstellen benannt werdenfor x in range(1000):
open("file%03d.txt" % x,"w").write("some text")
Ihre Dateinamen in der Bash-Version werden 10 bis 1000999 sein. Ich denke, Sie meinen "echo" etwas Text "> Datei $ Datei" –
ja, thks für die Erkennung. – ghostdog74
Die erste Option erfordert Bash 4, um die Auffüllung zu verwenden. In früheren Versionen können Sie führende Nullen angeben, diese werden jedoch nicht im Ergebnis angezeigt. –
Ich weiß nicht, in der Schale oder Perl aber in Python wäre:
#!/usr/bin/python
for i in xrange(1000):
with open('file%0.3d' %i,'w') as fd:
fd.write('some text')
Ich denke, ist ziemlich einfach, was es tut.
Ich habe Ihr Skript versucht, aber ich erhalte einen Fehler: ./crea.py:4: Warnung: 'mit' wird ein reserviertes Schlüsselwort in Python 2.6 werden Datei "./crea.py", Zeile 4 mit open ('file% 0.3d'% i, 'w') als fd: ^ SyntaxError: ungültige Syntax – Kaartz
probiere aus __future__ import with_statement – ghostdog74
Das wäre 'from __future__ import with_statement' (das System hat die Unterstriche in * * Ghostdog74 ** Kommentar). –
#!/bin/bash
seq 1 1000 | split -l 1 -a 3 -d - file
Above wird 1000 Dateien mit jeder Datei wird file000 ... eine Zahl von 1 bis 1000. Die Dateien mit file999
#!/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
Sie können ohne Äußerlichkeiten nur Bash verwenden und noch Pad Lage sein, die Zahlen, so dass die Dateinamen sortieren p roperly (falls erforderlich):
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 kann es wie folgt tun:
for filename in file{0001..1000}; do echo $text > $filename; done
Beide Versionen produzieren Dateinamen wie "FILE0001" und "file1000".
In Perl:
use strict;
use warnings;
for my $i (1..1000) {
open(my $out,">",sprintf("file%04d",$i));
print $out "some text\n";
close $out;
}
Warum die ersten zwei Zeilen? Weil sie gute Praxis sind, verwende ich sie sogar in 1-Schuss-Programmen wie diesen.
Grüße, Angebot
Während Sie für gute Praktiken eintreten (und zwar zu Recht), können Sie auch auf open auf Erfolg prüfen ... oder sterben "kann Datei nicht öffnen: $!"; – toolic
... oder Sie könnten einfach 'autodie verwenden;' –
Für Vielfalt:
#!/usr/bin/perl
use strict; use warnings;
use File::Slurp;
write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;
Das ist genial. Ich musste lachen über die Einfachheit für eine gute Minute. Upvoted. – Samveen
Hier ist ein kurzer Kommandozeilen-Perl-Programm.
perl -E'say $_ $_ for grep {open $_, ">f$_"} 1..1000'
nehmen Sie einfach eine große Datei, die mehr als 1000 Bytes (für 1000 Dateien mit Inhalt) hat. Es gibt viele von ihnen auf Ihrem Computer. Dann (zum Beispiel):
split -n 1000 /usr/bin/firefox
Dies ist sofort schnell.
Oder eine größere Datei:
split -n 10000 /usr/bin/cat
Dies geschah nur 0,253 Sekunden für 10000 Dateien.
Für 100k-Dateien:
split -n 100000 /usr/bin/gcc
Nur 1,974 Sekunden für 100k-Dateien mit etwa 5 Byte je.
Wenn Sie nur Dateien mit Text möchten, schauen Sie in Ihrem Verzeichnis/etc nach. Erstellen Sie eine Million Textdateien mit fast zufällig Text:
split -n 1000000 /etc/gconf/schemas/gnome-terminal.schemas
20,203 Sekunden 1M Dateien mit etwa 2 Bytes je. Wenn Sie diese große Datei in nur 10k Teile teilen, dauert es nur 0,220 Sekunden und jede Datei hat 256 Byte Text.
Die einzige Quibble kann "die Dateien werden keine Textdateien sein". Ich habe eine veraltete Version von GNU 'split', die' -n' nicht erkennt; die BSD (Mac OS X) Version erkennt es auch nicht. Ich muss nur meine CoreUtils-Installation aktualisieren. –
Ok, das stimmt. Wenn Sie eine Million kleine Textdateien benötigen, verwenden Sie einfach eine große Textdatei als Eingabe. Es sind genug auf Ihrem Computer. Zum Beispiel /etc/gconf/schemas/gnome-terminal.schemas, das 2.6 MB hat, wenn Sie ein sehr großes wollen. – erik
- 1. Wie kann ich mein PHP-Skript testen?
- 2. Wie kann ich ein Compile-Diagramm für Java-Dateien erstellen?
- 3. Wie kann ich Datenbankmigrationen testen?
- 4. Kann ich ein Skript-Tag mit jQuery erstellen?
- 5. Wie kann ich ein ultimatives Skript erstellen, um die neue Serverumgebung zu testen?
- 6. Auf ROBLOX, wie kann ich ein Minigame-Skript erstellen?
- 7. Wie kann ich dynamisch ein Dart-Skript für spawnUri erstellen?
- 8. Wie kann ich ein Travis-Skript für Haskel/stack erstellen?
- 9. Wie kann ich C-Header-Dateien erstellen
- 10. Wie kann ich Stunnel testen?
- 11. Wie kann ich Servlets mit JUnit testen?
- 12. Wie kann ich Log4j mit JMockIt testen?
- 13. Wie kann ich ein Schwein Skript debuggen
- 14. Wie kann ich ModelState testen?
- 15. Wie kann ich DelayedJob mit Gurke testen?
- 16. Wie kann ich Dateien umbenennen?
- 17. Wie kann ich testen, ob eine Liste von Dateien existiert?
- 18. Wie kann ich meine Website für ein anderes Land testen?
- 19. Wie kann ich Datenbanktabellen aus XSD-Dateien erstellen?
- 20. Wie kann ich ein Gradle-Skript in ein anderes importieren?
- 21. Wie kann ich einen Symfony2-Controller testen?
- 22. Wie kann ich ein Shelltoast erstellen?
- 23. Wie kann ich ein MSI-Setup erstellen?
- 24. Wie kann ich ein zweispaltiges Drucklayout erstellen?
- 25. Wie kann ich ein Support Ticket System mit PHP erstellen?
- 26. Django: Wie kann ich ein Mehrfachauswahlformular erstellen?
- 27. Kann ich ein UIContainerView programmatisch erstellen?
- 28. Wie kann ich ein CSS-Gleitmenü erstellen?
- 29. Wie kann ich ein neues Zahlenanzeigeformat erstellen?
- 30. Wie kann ich ein HTML-Popup erstellen?
Können Sie eine Textdatei erstellen? Können Sie ein Schema zur Generierung von Dateinamen erstellen, z. Datei0001, Datei002? Kannst du eine for-Schleife schreiben, um diese beiden Aufgaben zu erledigen? An welchem Punkt bleibst du stecken? – djna