Mit Shell-Skripten zum Kernel-Treiber für neue HW
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 95 | |
Author | ||
License | CC Attribution 4.0 International: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/32328 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Keywords |
FrOSCon 201719 / 95
4
8
9
15
20
22
23
24
25
27
29
32
36
37
38
39
40
45
46
47
48
49
50
51
53
54
59
63
64
65
74
75
76
79
83
84
86
87
88
89
91
92
93
94
95
00:00
Device driverLINUXArithmeticCalculationComputer hardwareInformationUNIXGastropod shellComputer fileLaptopVideo projectorBinary multiplierGrand Unified TheoryWEBOpen sourceUniformer RaumAtomic nucleusComputer scienceIterationData centerInstallable File SystemPDF <Dateiformat>Moment (mathematics)Link (knot theory)Spring (hydrology)SoftwareHeat waveXMLComputer animationLecture/Conference
08:30
Video cardVideo game consoleLINUXComputer animation
09:27
ArchivsystemPhysical quantityComputer fileOnline chatInstallable File SystemPDF <Dateiformat>Special markZusammenhang <Mathematik>Computer animation
12:17
Computer fileVersion <Informatik>Physical quantityPrint <4->Grand Unified TheoryAbstract syntax treeZahlMusical ensembleFactorizationMittelungsverfahrenVirtual memoryWINDOWS <Programm>Web servicePlatteBoom (sailing)Hand fanBenchmarkSIZDefault (computer science)Android (robot)Server (computing)UNIXHash functionData typeNumberSummierbarkeitComputer animation
21:16
Charakter <Topologie>Installable File SystemComputer fileNumberPhysical quantityLINUXZugriffGastropod shellPlatteUNIXFehlererkennungZahlNullPasswordMobile appCASHEPer milComputer animation
26:56
Set (mathematics)WordComputer filePhysical quantityZahlGRADENumberUNIXStatistikerVersion <Informatik>Block (periodic table)StreckeNullInstallable File SystemCharakter <Topologie>CountingStatisticsRepresentation (politics)Computer animation
32:36
LengthComputer fileZahlDirection (geometry)NumberZifferHistogramPrüfprogrammTable (information)WordPhysical quantityInstallable File SystemLimit (category theory)StatistikerTwitterFunction (mathematics)Mobile appIndexComputer animation
42:33
Computer fileContent (media)Structural loadWordMach's principleMoment (mathematics)Slash <Programm>Tape driveRecursive languageSpacetimeUNIXWage labourProtein foldingError messagesedLattice (order)Computer animation
52:30
Physical quantityNorm <Mathematik>Liste <Informatik>InformationZahlComputer fileError messageNumber theoryGUI widgetSpecial markComplementaritySpeciesCursor (computers)Maxima and minimaPlatteWeb servicePrint <4->Computer animation
01:02:26
Computer filePlatteCollisionGastropod shellPasswordFactorizationReading (process)Physical quantityLengthCurvePrint <4->FlagData typeError messageListe <Informatik>Equals signNumberSummationBefehlsprozessorMonster groupPredictionTestdatenSet (mathematics)CodeASCIIComputer animation
01:12:23
Computer animation
Transcript: German(auto-generated)
00:07
Hi, bevor es richtig losgeht, Lügen-Bieber, also in einer Minute geht was los, aber aus planerischen Gründen leider nicht der Vortrag, der hier angekündigt ist, weil ich erst gestern Mittag gehört habe, dass der angekündigt wurde und nichts davon wusste, der kam
00:24
im Web nicht und was nicht im Web steht, kenne ich nicht. Er stand aber im Gigity drin und ich habe jetzt, dann auch sogar jetzt gedruckte Manual geguckt und festgestellt, der Timetable steht da nicht im Text schon. Ich habe das Firmen Notebook mit allem, was man hätte erzählen und zeigen können wollen, leider nicht dabei. Tut mir unheimlich leid, war nur für einen Vortrag vorbereitet und
00:44
der zweite ist jetzt heute Morgen im Web auch noch erschienen über magische Dinge. Also jetzt kann man im Web nachgucken, dass es einen Vortrag gibt. Ich erzähle sehr gerne ganz viel über Shell, ich habe ein paar gute Ideen oder ich darf vielleicht was wünschen, aber zumindest den, ich kann euch erzählen, was da so passiert wäre,
01:01
aber das ist wirklich wildes Fabulieren, ganz ohne Beispiele, das wird extrem trocken und macht keinen Spaß. Das tut mir sehr leid, also wer jetzt nur Körle und irgendwas hören wollte, gibt noch schöne andere Talks. Ansonsten können wir sehr schöne andere Shells haben, ich habe zwei gute Ideen dabei, aber wenn es noch eine Idee gibt. Was hast du denn jetzt vor? Du hast gesagt, dass du nicht kommt, was hast du vor?
01:23
Ich hatte gestern schon mal, ich tue ganz gerne Vorträge über Shells, und gestern hat es nicht wirklich gereicht, im Fallsystem Dupletten von irgendwas zu suchen, wäre eine Variante, eine Problemstellung, die ich auch früher von dem Kunden mal
01:40
hatte, durch ein Fallsystem durchgraben und einfach gucken, welche Datei kommt mehr als einmal vor, mit inhaltlich identischen Kopien, die rausfinden und sich ein bisschen Gedanken machen, wie man das gut macht, oder die Variante 2, die immer wieder auftritt, weil ich wirklich auch auf kleinen Bandit-Controllern sehr viel Shellskripte auf der Messtechnik schreibe, Rechnen in der Shell. Ich will einfach ein bisschen mit der Shell rechnen,
02:04
wie mache ich das mit Integer-Zahlen, mit Fließkommazahlen, mit anderen Sachen, und wie kann man mit der Shell auch so ein bisschen rechnen, ganz ohne Multiplizieren und so, um zu rollen. Wie kann man rechnen auch anders, also so ein bisschen Arithmetik dafür, das wären so die beiden Ideen, oder wie man sagt, ich würde schon immer auch ganz dringend irgendwas, Stand-Up Shellskripting, aber dafür habe ich
02:24
einfach leider jetzt die Kernelsachen. Es wäre ein Embedded-Controller gewesen, wo ich jetzt 5 Jahre gearbeitet habe, um für den ASIC den Driver zu schreiben, die Support-Software, den Kernel-Driver, die Lambo-Software, das ist entstanden eben aus ganz viel Hardware-Beschreibung mit XML, PDF-Datenblättern von den Chips,
02:43
die da noch so dran rumhängen von irgendwelchen externen Firmen, Excel-Sheets und andere lustige Informationen von internen Kollegen, die Teile der Register beschrieben haben, das mit Shellskripten alle so zusammen manchen, dass das das gleiche Format hat, aus dem man dann heraus C-Code generieren kann, die die Hardware beschreibt, dann gibt es ein
03:03
Kommando-Zeilen-Tool, mit dem man in der ganzen Hardware rumhängen kann, Lese-Register, Schreibregister, macht Dumps von Teilen, vergleicht das mal und so was. Damit haben wir 5 Jahre jetzt unsere Hardware beobert und festgestellt, hey, es tut und die Hardware also in mehreren Iterationen den Chip verbessert, der jetzt Ende Februar announced wurde. Das ist
03:24
ein Chip für die Ansteuerung eines Laser-Projektors, wo man mit zwei Mikrospiegeln X- und Y-Ablenkungen für den Laser machen kann und dann so ein bisschen Laser-Projektion. Und am Schluss gibt es dann Shell-Skripte, die prüfen, wie Shell-Skripte ablaufen, das ganze System initialisieren
03:40
und weil das ganze Know-How und Logik in den Shell-Skripten jetzt drin ist, wie man mit dem Zeug umgeht, da gibt es ein Start-Skript, ein Stop-Skript, ein Test-Skript und so weiter. Und mit ein bisschen S-Trace und anderen Sachen kann man diese Abläufe mitlocken und den Kernercode generieren und der Kern kann das gleiche Teil in den Treffer ablaufen lassen, weil ich auch immer ganz gerne S-Trace Vorträge habe. Das kommt noch öfter, hoffe ich mal,
04:04
weil es ein schönes Beispiel ist, wie man mit ganz vielen Tool ganz viele lustige Sachen machen kann, aber Notebook im Büro, weil ich nicht wusste, dass der Vertrag angenommen wurde. Sorry für weit. Nun, letzte Chance rauszugehen. Dateien im Dateisystem suchen, was gleich ist oder
04:23
ein bisschen Rechnen in der Shell. Irgendwelche Meinungen? Handzeichen, Fußzeichen? Handzeichen für Dateien suchen, welche gleich sind. Rechnen in der Shell. 3 zu 3, habe ich
04:42
gepasst. Jetzt noch ein extra Handzeichen für eins oder zwei. Dateien suchen. Jetzt still und zurück weg. Ich weiß von gar nicht. Da ist ein Moment, ich muss die andere, also ich meinte, da pinkt irgendwas rot. Nein. Also der andere Vortrag wäre eventuell
05:08
nicht aufgezeichnet worden, je nachdem, was ich mit meinem Chef abgesprochen hätte, wenn ich es gewusst hätte. Weil dann kann ich mir aus dem Nähkästchen plaudern, ohne dass mir das nachgucken und mich verklanken. Wo ist denn hier... Ah, hier. Also das mit
05:25
Shell und sowas, das ist alles überhaupt kein Thema. Achso, habt ihr schon ein Bild gehabt? Ah, was kann denn der Beamer? Jetzt habe ich ein Bild. Dieser Beamer kann
05:53
1920. Hey, also dann. Muss ich das umschalten? Könnt ihr das umschalten? Habt ihr ein
06:12
Signal? Laptop. Analog, VGA, digital. Signalquellen. Laptop. Muss ich? Könnt ihr?
06:30
Okay. Wir haben einmal auf Laptop gekriegt. Nein, nein. Nichts, nichts, Entschuldigung. Ah, noch eine Pappe. Ja. Wer war gestern in dem Vortrag, von welchem Datei-System
06:41
1, 2, 3? Ah, das waren die drei Hände. Und noch... Ah, okay. Ja. So, dann noch das Mikrofon, bitte. Ah, so für das Aufzeichnen. Genau. Oh, noch kleiner. Test 1, 2, 3. Oh, ein bisschen tiefer.
07:20
Gute Idee, das rauszuziehen. Ah, mit mehr Gewalt. Mal gucken. Das war die Schriftkurse von gestern. Das müsste auch hinten wieder gehen. Folien von
07:45
gestern. Einfach nochmal kurz Hallo sagen. Ich werde das nicht alles wiederholen. Die Shell-Script gibt es irgendwie da. Meine ganze Teile der Software-Karriere in der Schule mit Rechnern spielen schon durften. Da war ich sehr glücklich darüber, dann
08:02
relativ früh angefangen, Linux zu machen, nachdem wir vorher schon Unix an der Uni hatten. Und ich aber schon ab 86, freie Software in Form von Tech an der Uni im Tübingen implementieren und supporten durfte. Und dann Linux halt irgendwie machen konnte, weil ich immer mal Unix-Quellen haben wollte. Wir in der Uni Tübingen haben keine Unix-Quellen gehabt. Das war total ätzend, wenn irgendwas nicht tut
08:23
für die Rechner, die wir da hatten, im Rechenzentrum und in der Informatik. Und da habe ich dann endlich mit Linux mal gescheitert. Ich hatte vorher schon ein BSD laufen, aber das war instabil. Und das Linux war stabil. Und dann blieb es bei Linux. Dann habe ich relativ lang Grafikkappentreiber für x86 gemacht, weil meine Karte halt nicht tat. Fängt man das an und macht das weiter. Und war dann
08:45
lange in Tübingen in der Softwarefirma, so technische Entwicklung und Consulting. Und jetzt bin ich seit fünf Jahren in dem Projekt, eben für diesen Laser-Projekt dabei bei Bosch gewesen und seit 2014 da dann angestellt. Bosch Sensortech ist eine kleine Tochter von Bosch, die diese ganzen Beschleunigungs-Sensoren in Handys, We-Konsolen, Drohnen,
09:04
sonst was macht. Alles diese Mikromechanik-Sensoren, die eigentlich aus der Autoindustrie kommen. Im Auto sind sie einfach ein bisschen anders von der Technik her. Die haben mehr Strom, mehr Platz. Die müssen sehr viel zuverlässiger sein. So ein Airbag, der darf nicht irgendwie einmal alle Jahre lang mal ausfallen. Das ist blöd. Kommt nicht so gut. Im Konsumageschäft hat man
09:22
andere Kunden. Es muss nicht 20 Jahre verfügbar sein und laufen. Man hat ganz andere Stückzahlen. Es darf keinen Strom brauchen. Es darf kein Platz kosten. Und dann haben sie sich irgendwann beschlossen, da machen wir mal eine eigene Firma draus, weil das einfach so anders tut, zwar die Technik ist. Alle unsere Sensoren werden in der Fab in Reutlingen hergestellt. Weil die Mechanik ist tatsächlich Bosch-Patent und so was.
09:43
Das kommt da alles raus und die Elektronik drum und sowas wird bei uns entwickelt und die Halbleiter zum Teil dann auch in Asien gefertigt und dann zusammengebaut. Und mit diesen Mikromechanik-Sachen haben wir auch diese Spiegelchen gebaut. So ein Spiegel für X-Ablenkung, für Y- Ablenkung. So ähnlich wie braunen Schröre, plus nicht mal mit Elektronen, sondern jetzt mit dem Laserstrahl. Nimmt man ein paar bunte Laser an und kann
10:03
Sachen projizieren. Das war das, was ich jetzt eben fünf Jahre lang gemacht hab. Der Spiegel ist ein kleiner Chip, so zwei auf zwei Millimeter, keine Ahnung, so ein Millimeter großer Spiegel. Aber das ist ein Silizium-Spiegel, hängt
10:22
an einem Silizium-Faden und ist ein Silizium- und Glasdeckel und so was eingebettet. Also ist wirklich ein ganzer wafervoller großer Spiegel, ein großer wafervoller kleiner Spiegel. Aber nicht in einem Chip, also sind dann zwei unerwähnliche Chips, die werden magnetisch angedreht, das
10:41
haben Spulen drin, man braucht aus dem Magnet dran und die klebt man dann irgendwo drauf, dass das passt. Und noch ein extra Chip mit der ganzen Ansteuerlogik. Und noch ein paar andere Chips dann für Stromversorgung und Lasergedöns. Das war die Aufgabe von gestern, halt irgendwie Dateien suchen und gucken, was so geht. Und was ich dann so draus gehabt hab, was man alles macht oder was ich schon in Datei-System gemacht hab,
11:02
außer Doc-Files suchen und die mal nach Abiwirt zum Beispiel konvertieren oder Tech-Files suchen und die nach PDF konvertieren, das ist mehr so meine Variante, aber halt, ich hab irgendwie ein Ausgangsprodukt und sag, oh, da fehlt ja das aktuelle PDF, weil nicht neu oder noch gar nicht gemacht oder ich hab da ein C-File, da fehlt ja das noch, das Executable dazu. Was in dem Zusammenhang ist, wir haben gestern
11:22
schon ziemlich viel rumgespielt, erstmal mit Feind überhaupt einzelne Dateien finden, wie finde ich dann alle OTT-Files und wie gehe ich mit den komischen Sonderzeichen Namen um. Gestern wurde aufgezeichnet, kann man sich angucken. Und wo ich da halt so überlegen war, was in dem noch reinspielt ist, mir gekommen, dass ich vor vielen, vielen Jahren mal irgendwie für ein großes Datenarchivierungssystem
11:45
für Messdaten und Entwicklungsdaten dann mal das Problem hatte, dass die ganz oft die Daten nochmal irgendwo eingecheckt hatten und noch eine Kopie und noch eine Kopie und erstens war nicht mehr klar, woher die Kopienten alle kamen und ob die wirklich gleich sind oder sich geändert haben und dann haben wir angefangen tatsächlich das Zeug durch Forsten rauskriegen, wo sind denn Kopien
12:03
von irgendwas, was ist inhaltlich identisch, wie kann man das gut machen und dann, wenn man das mal weiß, kann man sich in dem zweiten Schritt natürlich überlegen, schmeiß ich es einfach weg, weil es eine Kopie ist, die da nicht hingehört, wenn man einfach so rummüllt, indem man falls oder ersetzt sich die zum Beispiel durchs Film links. Aber jetzt im Wesentlichen und jetzt mal drum einfach so ein paar Gedanken, wenn man sehr
12:21
viele Dateien hat, ich habe hier in dem kleinen Notebook eine 2TB Platte drin, ich habe sehr viele Dateien, im Arbeitsnotebook ist eine 4TB und ein Server hat noch ein bisschen mehr, also ich habe viele, viele Sourcecode Versionen, ganz viele Android Versionen, früher hatte ich auch ganz viele Körne, Bäume nebeneinander liegen, jetzt sind es mehr andere Sachen,
12:40
aber jetzt halt einfach gucken, was ist denn so gleich und wie mache ich das einigermaßen effizient? Und so der erste Gedanke war, wo ich das angefangen habe, man kann mit so Unix Tools, DIV oder CMP Dateien vergleichen, aber welche beiden Dateien will ich denn vergleichen, also wenn die wirklich auch in verschiedenen Bäumen liegen und halt
13:02
irgendwie Benutzer A vielleicht auch, wenn ich es wirklich systemweit mache und Benutzer B die gleichen Dateien haben und ich Plattenblatt sparen möchte oder sage, hey, ihr arbeitet am gleichen Projekt, was immer die Gründe sind. Ich will alle identischen Kopien auf meiner Platte jetzt überlegen, wie man das gut macht. Und wo kommt man das schnellst so überall vorbei? Der erste Gedankengang war
13:24
Dateien, wenn man mal guckt, ich meine, hier liegt nicht so richtig viel rum, eher zufällig, was jetzt da gerade ist, Dateien können ja auch, weil ich halt erst überlegt habe, wie kriege ich das mögliche effizient hin und wie kann ich sowas testen, um nicht jede Datei mit jeder vergleichen zu können, das erste, wo man wahrscheinlich relativ schnell drauf kommt, ist, dass man relativ schlau
13:42
von zumindest den Dateien, um wie es dann gehen wird, mal eine Prüf-Summe zu machen. Und wenn die Prüf-Summe gleich ist und die Prüf-Summe was taugt, dann wird auch die Datei gleich sein oder ich kann nochmal nachtesten oder sowas. Das heißt, es ist schon mal relativ gut herzugehen, einfach sagen, ich mache mal Prüf-Summe. Und jetzt kann man dann anfangen, sich überlegen, wenn man was
14:00
macht, was dann vielleicht auch viele, also Verkleidigkeiten und hier irgendwie würde ich jetzt sagen, meine Lieblingsprüf-Summe ist immer noch MD5-Summe. Ist kryptographisch wohl nicht mehr so top of the state und sowas, aber wenn man das so ein bisschen macht, dann kommt ja lauter lustige Summen raus und solange die irgendwie, mein zweites Lieblingstool ist immer sortieren,
14:20
wenn irgendwas mal gucken, dann sortiere ich das halt mal und dann kann man ja mal gucken, ob da gleiche Prüf-Summe auftauchen. So von der Idee her, bevor ich das dann jetzt auf mehr Dateien mache und es dann am Schluss schnell gehen soll mit ganz vielen Terabytes von Daten und sonst irgendwas, sollte man sich mal kurz ein bisschen überlegen, welche Prüf-Summe ist, wofür, wie gut geeignet, wie schnell geht denn das eigentlich? Das heißt,
14:43
man kann einfach mal hergehen und sagen, wir lassen mal geschwind MD5-Summe laufen auf irgendwelche größeren Dateien. Ich weiß nicht, ob das groß genug ist. Mal gucken, wie lang braucht 0,13
15:01
Sekunden, das ist kein Benchmark. Also Benchmarks, die nicht mindestens eine Sekunde brauchen, die taugen irgendwie nix. Also gute Benchmarks laufen mindestens mal eine Minute, dass man halt was sehen und messen könnte. Das ist alles Zufallsteil, was hier kommt. Wenn ich mehr Daten brauche, dann gehe ich zu meinen Fotos irgendwie und nehme den letzten Urlaub und suche mir da ein schönes
15:21
Datum raus, wo ich noch nicht so viel pro Tag fotografiert habe. Mal gucken, 1,8 Sekunden, kann man das nochmal testen, 1,6 Sekunden so um den Dreh rum. Also die zweite klassische Prüf-Summe, die es immer irgendwie gibt,
15:41
ist nicht so laut. CaC32 war immer so irgendwas, wobei CaC32 als Toolglaub im Default meistens nicht mehr installiert ist. Früher hat man,
16:03
Perl, Archiv, Zip, irgendwie habe ich das mal zuletzt suchen müssen, weil ich tatsächlich für unseren Hardware-Zwecks auch wieder CaC32 gebraucht habe und überrascht festgestellt habe, ich habe das beinahe gar nicht mehr. Zurück, für was da gerade passiert ist. Das braucht jetzt knapp eine Sekunde, 0,9, 1,8 ist ein Faktor 2. Kann nicht
16:21
wichtig sein, aber ob ich jetzt eine Stunde oder zwei warte, kann ganz praktisch sein. Ob man es dafür jetzt ernsthaft verwenden möchte, muss man sich überlegen. Also wo ich jetzt ein bisschen hin möchte, Beispiel wird jetzt irgendwie erstmal nur mein Home Directory sein. Mit Find kann man jetzt einfach gucken, was liegt im Home Directory, so alles rum. Und das erste, was man auf jeden Fall machen sollte, ist,
16:41
wenn es mir nur um Dateien geht, Find, obwohl ich eine SSD habe, braucht auch ein bisschen Zeit, ist tatsächlich, beim zweiten Mal geht es schneller. Das sind 109.000, 1,09 Millionen Dateien, dachte ich da gerade. Und eigentlich interessiert mich nur die Dateien, die hier rum
17:01
liegen. Also alles andere lassen wir gleich mal weg. Und dann sind es noch 970.000 Dateien. Das war es, da wir jetzt mal ein bisschen durch und gucken mal. Ich habe eine Million Dateien jetzt allein schon in meinem Home Directory liegen, ohne Werkverzeichnissen und sonst irgendwas. Diese CAC 32 Prüfsumme,
17:20
die Faktor 2 schneller ist, die liefert 32 Bit Prüfsumme. Das heißt, so eine Zahl zwischen 1 und 4 Milliarden. Wenn ich jetzt eine Million Dateien habe, die irgendwelche Prüfsummen machen, und ich habe 4 Milliarden verschiedene Prüfsummen, dann ist bei einer Million Dateien so 1 zu 4.000 schon, dass da irgendwas auch mal gleich aussieht und vielleicht doch
17:43
nicht so gleich ist. Muss man mindestens im Hinterkopf fallen. Wenn ich das mache, dann würde ich sagen, ist nicht so ganz sicher, dass, wenn jetzt die Prüfsumme gleich sind, die Dateien wirklich identisch sind. Kann aber schon sein. Kann man entweder noch mal anders nachprüfen, sonst noch was dazu machen, oder man sagt gleich,
18:01
okay, dann nehme ich gleich MD5, gebrochen und Faktor 2. Immer so ein Gedankenspiel, den man mithaben sollte. Wie gut ist die Hash wirklich? Jetzt finde ich das erst mal gar nicht schlecht. Was ich damals bei dem Kundenprojekt, wo ich mich dran ändern kann, dann auch schnell angefangen habe, war, zumindest in der Überlegung, Dateien sind nur dann gleich, wenn sie zumindest mal gleich
18:21
groß sind. Ja, also sobald sich die File size irgendwie ändert. Weil wenn ich jetzt tatsächlich mein ganzes Home Directory da mit der Prüfsumme durcharbeite, das ist schon ein bisschen CPU-Aufwand. Die müssen ja alle gelesen werden. Und was ich ja auch mal machen kann, ist Find Home Directory, Type F. Kriege erst mal nur den Namen, aber Find hat zum Beispiel
18:41
die schöne Option minus LS. Dann passt das nicht mehr auf die Zeile, wer davon zu groß ist. Da kommt unten die File size raus. Ja, und in früheren Zeiten mit echten Files hätte ich jetzt gesagt, jetzt kommen so meine schönen Shell-Tools und sowas. Ich hätte gerne die File Größe und den Dateien haben. Das sind so die beiden. Und dann suche ich mir nur noch die Dateien raus, die die gleiche Größe
19:01
haben und brauche bloß die vergleichen. Weil wenn die Größe nicht stimmt, weil die Größe auflisten, das geht halt unheimlich schneller. Und die Dateien, die es in der Größe bloß einmal gibt, die können keine Dupletten haben. Die brauche ich schon gar nicht mit der Prüfsumme beagen. Und wie macht man sowas? Wie gesagt, das klassische Tool wäre bei mir AWK. Dann muss man die
19:22
Spalten mühsam zählen. Spalte 1, 2, 3, 4, 5, 6, 7, wenn ich mich nicht verzählt habe. Dollar 7 müsste die Größe sein und Dollar irgendwo weiter hinten. Würde ich jetzt einfach sagen, in AWK könnte man sagen Dollar NF. Number of Fees, das ist das letzte
19:41
Feld. Gib mir die mal aus. Da kommt der Zahlen und den Dateinamen. Wenn ich das so mache, werde ich schon mindestens einmal auf die Nase fallen, weil das letzte Feld nur dann das letzte ist oder der ganze Dateinamen, wenn keine Leerzeichen drin sind. Wie wir gestern da auch schon festgestellt haben, auch ich habe inzwischen Dateien von
20:01
lieben Freunden, die Windows verwenden. Und in Windows hat irgendwie jeder Dateinamen irgendwie ein Leerzeichen drin. Es geht anscheinend kaum mehr anders und es sind gar nicht so wirklich wenige, wenn man guckt. Das sind jetzt nur die Dateien, die bei mir Leerzeichen haben. Das sind schon 4.400 Dateien. Deswegen, aber
20:26
dafür geht relativ schnell, kann man gucken. So hätte ich jetzt eine Liste von allen Dateien, die fast richtige Dateinamen hat. Und das Find ist auch in ein paar Sekunden durch. Wenn man sich die Man-Page von GNU Find durchliest,
20:41
also das Find minus LS, das konnte Jonik schon vor 20 Jahren. Was Jonik vor 20 Jahren leider nicht konnte, ist, man kann, also Find hat man immer so unermesslich minus Print, gib mir das aus, was du gefunden hast. Wenn man es nicht hinschreibt, macht er das auch automatisch. Die neuen können auch in Print F. Und da kann man dann in der Man-Page nachlesen, da kann man jetzt noch ein Print-Format angeben, was
21:01
man dann alles drucken soll und wie und so. Mit komischen Buchstaben und Prozent S für die Size finde ich relativ. Und das andere war klar P für Pfad. Klein P oder Groß P, weiß ich schon wieder nicht mehr. Und wenn ich das so mache, printet das alles ganz toll in einem riesen Wurst, weil man dann natürlich auch sagen
21:20
muss, ich mach noch ein Backslash N in Zeilenende dran. Ja, dann sieht das relativ hübsch aus. Oder um es ein bisschen lesebarer zu machen, kann man ja auch ein Backslash T für Tab reinmachen, dann ist es meistens die gleiche Spare. Da kriege ich jetzt tatsächlich die Größen und die vollständigen Dateien haben, weil ich jetzt mich um Leerzeichen und sowas
21:40
erstmal nicht kümmern muss. Für Spaß einfach mal gucken, wie lange braucht das jetzt? Wie schnell bin ich denn am Schluss? Wenn ich es einmal durchgelesen habe, spielt meine SSD auch keine Rolle mehr, solange mein Directory-Cache, was ich jetzt brauche, um das Fallsystem mit den einer Million Dateien zu machen, irgendwie in meinen Hauptspeicher reinpasst. Ja, weil Linux ja richtig schön alles im Buffer-Cache hält,
22:01
also wenn man genug Memory hat, dann ist hier in diesen Cache-Buffern alles drin, der Dateinhalt, aber jetzt erstmal die ganzen Direktoren Zugriffe. Und beim ersten Mal hatte das Feind tatsächlich länger gedauert. Jetzt, selbst wenn ich auf die Größen gucke und einen Start mache und von jedem einzelnen Datei immer noch sage, ein Start, wie groß bist du, was hast du für Permissions und Zeug, dann kostet
22:20
mich das insgesamt 2,3 Sekunden für eine Millionen Dateien Zugriffe. Ist gar nicht so schlecht. Wie gesagt, das würde jetzt mit einer Platte beim zweiten Mal gleich schnell gehen, wenn man genug Speicher hat. Das schnuckelige kleine Notebook hat 16 Gigabyte, das ist für so ein kleines Dateisystem noch kein Problem. Größere Dateisysteme, größere Speicher. Aber zu ein bisschen
22:42
rumspielen, ist dann schon immer gut. Man tut sich das mal in eine Datei ablegen. F wie Find-Ergebnisse. Damit ich jetzt ein bisschen machen muss, in dem wir zweieinhalb Sekunden warten. Wenn man das anguckt, was da so ist. Und jetzt mit Tab getrennt, so
23:00
praktisch. Die Dateinahmen. Und jetzt interessiere mich erst mal bloß die Größen. Jetzt will ich einfach nur die erste Spalte haben. Hätte ich früher auch wieder mit AWK, Printstola 1 gemacht. Es gibt ein anderes, schönes Tool CUT. Spaltenweise rausschnippeln. Habe ich merkwürdigerweise erst nach 15 oder 20 Jahren Unix kennengelernt, obwohl es das auch schon immer gab. Das ist auch schon 30 und mehr Jahre alt.
23:21
Mit CUT kann man sagen, es gibt irgendwelche Delimiters, zum Beispiel Doppelpunkt, also sowas. In EDC PassWD ist ja alles mit Doppelpunkt getrennt. Und ich hätte gern die Spalte 4, keine Ahnung. Und dann gibt da halt Ffeld 4. Und dann kann ich mir jetzt die Spalte 4 oder 5 oder irgendwas aus dem Passwort-Fall rausmachen. In vielen
23:42
Dateien kann ich sagen, ich mache als Spalten-Trenner ein Leerzeichen und nehme mir die Spalte 1. Jetzt für meine Find-Ergebnisse. Jetzt kommt wahrscheinlich, schon wieder, Feld 1. Wichtig. Dann kommt alles, wenn ich jetzt im letzten Find hier nicht das Leerzeichen gemacht habe,
24:01
sondern ein Tab-Zeichen. Und deswegen muss ich hier dann auch entweder sagen, mach mal Trennzeichen, Backslash-T, Tab, irgendwas. Und hier darf ich kein Backslash-T eingeben. Ah, okay. Dann mach ich auf der Tastatur ein Ctrl-V-T in der Shell. Ich möchte das Tab-Zeichen
24:21
gequoted haben, wenn ich nur auf Tab drücke, dann passiert erstmal nichts in der Bash. Aber jetzt ist ein echtes Tab-Zeichen auf der Kommandozone. Und dann kommen nur Nummern. Das mit dem Tab ist nicht schlimm, weil das ist doch die Fort-Character. Cut von Haus aus denkt sich, ah, Spalten wird mit Tabs getrennt, nicht mit Leerzeichen. Und deswegen ist Cut einfach, ich hätte gern das erste Feld. Das sind genau die Zahlen,
24:43
hoffentlich. Und wenn man sich nicht immer so durchblubbern möchte, ist Hetten ein ganz wichtiges Tool, so ein bisschen Daten in der Shell angucken, entweder Pipe nach Het oder nach Less, um zu gucken, kommt da so ein bisschen was richtiges an. Die Gegenprobe Feld 2, was ist denn da drin, das sieht aus wie eine Dateinahme. Und das ist ab dem ersten Tab so lang, bis der
25:01
Dateinahme wieder ein Tab enthält. Man weiß ja nie, was von winter so alles kommt. Man kann sagen, Feld 2 bis Ende, dann habe ich, das wären wirklich alle Dateinahmen komplett und richtig. Für die meisten spielt es keine Rolle. Spielt es eine Rolle für irgendwas? Ah, also das kann man testen. Ich zähle einfach,
25:21
wie viel Zeichen meine Dateinahmen in der zweiten Spalte sind. Wenn man sowas wissen will, immer ein bisschen so Prüfungen drin machen, mache ich das richtig, habe ich alles. Ich mache das gleiche nochmal, von Feld 2 bis mehr. Sind genau gleich viele Beiz, wenn ich das richtig sehe. Es scheint keine einzige Datei in meinem Dateisystem ein Tab-Zeichen zu enthalten.
25:41
Das ist auch schon mal eine gute Nachricht. Ja, weil sonst wäre jetzt die Spalte 2 allein, wäre bloß der erste Teil von so einem Dateinahmen ohne Tab, mitten im Tab. Und dann hätte der zweite Heft hinter dem Tab, hätte in der Ausgabe hier gefällt, wo ich den Tag mache, nur das zweite Feld, was das Feld zwischen dem ersten und zweiten Tab ist. Und
26:01
dann wäre da hinten noch mehr Dateinahmen gekommen, wenn beide gleich viele, WC, Minus C, Word Count, zählen mal nur die Charakters. Und wenn die beiden Zahlen gleich sind, dann war wohl nirgends ein Tab drin. Zweite Gegenprobe. Ich suche mir Ctrl-V, Tab. Zählen mit dem
26:21
Tab, da findet ihr nichts. Zwei Tests, ein Ergebnis. Okay, ich will nur die Zahlen erst mal haben. Zahlen. Ja, und jetzt will ich gucken, welche Zahlen sind wie oft und wie viel da. Dann sortiert man die halt mal irgendwie. Und damit man schön angucken kann, ist immer gut, man sortiert die numerisch. Das sind ja jetzt Zahlen. So,
26:40
wenn die irgendwie sortiert werden, reicht mir das eigentlich völlig. Jetzt ganz, ganz, ganz viele Nullen. Und das ist schön angucken zu können. Also nur fürs Angucken jetzt nr oder minus n minus r, davon beides machen. Sortiert jetzt numerisch, aber rückwärts. Dann sehe ich die größte Zahl ganz oben. Das ist aber beides ziemlich
27:00
unübersichtlich. Das Sortergebnis wird viel übersichtlicher, wenn man sagt, sortiert numerisch und unique. Dann sehe ich, wie viel verschiedene Größen von Dateien in meinem Dateisystem rumliegen. Es gibt Dateien mit 0, mit 1, mit 2. Hinten raus wird es dann wahrscheinlich mal irgendwann. Immer noch, glaube ich, fast alle Zahlen, wenn man so
27:22
guckt. Naja, wenn man ganz nach hinten guckt, lassen dann also zwischen, keine Ahnung, 9 Millionen oder 90 Millionen. Wie viel ist das denn? Ein bisschen mühsam. Da ist dann gut, man hat nimmer raus. Also das sind die 100.000 und das sind die Millionen. Das sind also dann 9 Gigabyte. Irgendwo liegt eine Datei mit 9 Gigabyte drum.
27:41
Aha, die größte Einzeldatei. Auch nicht so richtig praktisch. Aber das zweite Lieblingstool von mir, also sort minus u, sehe ich die verschiedenen Größen. Aber jetzt sehe ich ja gar nicht, wie viel sind da gleich und sonst irgendwas. Und dafür ist ein wunderschönes Tool Unic, also nicht mit u hier. Ich könnte auch nur Unic sagen,
28:03
dann tut er wieder, jetzt kommen ganz viele, ganz viele Nullen, ganz viele Einbeit-Dateien und irgendwie mit Unic tut er die wieder zusammenfassen, was sort minus u auch macht. Aber auch nach vielen 10 Jahren habe ich gelernt, Unic hat eine Option wie das C. Man page lesen bildet, da bin ich irgendwann drüber gestolpert. Und dann zählt, tut er die
28:21
wieder zusammenfassen, gibt aber mit minus C einen Count aus. Dann gleich mal genauer angucken, was ich sehe. Aber da steht jetzt im Wesentrennen, ich habe 37.000 Dateien mit der Größe 0. Das überspringen wir mal kurz. Ich habe 251 Dateien mit
28:41
1, was mir ziemlich wenig vorkommt. Ich habe 1500 Dateien mit Größe 8 und eine Dateilänge 20 ist sehr beliebt. Fragt mich nicht. Alleinst noch angucken könnte man jetzt dann so ein Statistik machen und überlegen, warum Dateien mit 20 so richtig groß sind. Wenn man das näher interessiert, dann kann man ja
29:01
mal gucken, welche Dateien senden das. Die Brutalversion ist jetzt natürlich, dass auch sowas, kann man Feind fragen. Feind kann man auch sagen, ich hätte gerne die Dateien mit Größe irgendwas, wobei das normale Feind die Größe immer in Blöcken, meistens 512 Beizektoren macht. Ich will aber jetzt genau die mit 20
29:20
Beiz haben. Cluefeind kann sagen, mach die mit 20 Charakters. Genau und nur die. Dann weiß ich, warum es so viel ist. Aber da blubbern so alle möglichen, lustigen Dateien rum. Da oben war auch ein anderes. Unter anderem ganz
29:40
viele GZ-Dateien und wenn ich die auspache mit Z-Cut, da habe ich jetzt irgendwas verdippt. Eine so 20-Byte- große Datei, ich zeige es Ihnen mal. Dann kommt da genau 0-Byte raus. Wenn man
30:00
eine 0-Byte-große Datei zippt, kommt immer eine 20-Byte-große Datei raus. Der Zipp-Header ist 20-Byte und deswegen habe ich halt jede Menge 0-Byte-Dateien, wenn ich 20-Byte-Dateien, wenn ich mal ganz viele 0-Byte- Dateien gezippt und ich weggeschmissen habe. So kann man einen Plattenplatz auch voll kriegen. Okay, was ich jetzt
30:20
tatsächlich nicht verstanden habe auf die Schnelle ist, mal gucken, ob wir das jetzt gefliessend überspringen, was in meiner komischen Liste drin ist, wo dieses Echo-Zeug herkommt. Es gibt einen, das ist immer der Count und was er sortiert. Ich habe numerisch sortiert und irgendwo ist die Zahl 1 und das sind verschiedene
30:41
Repräsentationen der Zahl 0. Wenn ich das numerisch sortiere, ist 0 und deswegen ist das ganz vorne. Warum das da ist, kann ich natürlich jetzt auf die Schnelle noch nicht sagen. Sieht komisch aus. Könnte man jetzt in der Liste nachgucken, kann ich? Echo, Leerzeichen, was steht
31:00
in meiner komischen Dateiliste? Steht drin. Und wo steht das? Echo. Mitten drin. Das ist Teil dieses, oh mein Gott. Wenn man sich so anguckt, wie so ein Lockpfeil aussieht, muss man ja
31:21
verstehen. Das ist die Größe und das ist der Dateiname. Das heißt jetzt wirklich, der heißt Chinese, viele Leerzeichen, Manual noch mehr. Was habe ich denn da installiert? Und hier, der Dateiname fängt hier auf, Home, Harald.
31:41
Ich suche nur in Home, Harald und der Dateiname hört hier hinten auf. Da sind zwei Zeilenenden in diesem Dateinamen. Und in dem Output-Format ist das halt jetzt ein bisschen blöd gelaufen. Die hat zwar null Byte und dieses Echo und diese Restgefrickel kommt als eine Dateifragezeichen mit Vierbyte vielleicht.
32:02
Wollen wir gar nicht drüber nach. Also es gibt so ein paar falsch positive, über die kann man auch mal suchen und sich eh nicht einen Gedanken machen, wie finde ich die. Wollen wir jetzt einfach mal ignorieren. Aber wissen wir wenigstens von diesen komischen Echos in der Liste. So, wenn man jetzt guckt,
32:21
jetzt habe ich zum Beispiel 251 Dateien, die genau einzeichnen haben und mit Minusgroß N oder Less Minusgroß N kann ich mir die Zellenzahlen anzeigen lassen. Und ich habe insgesamt 126.000 verschiedene Dateilängen in meinem Dateisystem.
32:40
Ja, das ist schon ziemlich beachtlich eigentlich. Mich hat das überrascht. Rating, nein, wieder zurück. Und davon allein zum Beispiel 20.000, also 126.000 verschiedene Längen.
33:01
Und allein 20.000 mal sind so 20 Beidateien. Aber was mich ja eigentlich interessiert, wie viele Dateien haben unterschiedliche Längen. Das sagt mir die Liste zunächst mal nicht, das sagt mir bloß wie viele unterschiedliche. Aber wenn ich noch mal das Original angucke, nein, doch.
33:22
Unic minus C. Ich zähle immer, wie oft kommt da irgendwas vor. Das ist die Anzahl von, wie oft die Länge kam. Und was mich eigentlich interessiert ist tatsächlich, wie oft steht hier eine 1. Diese Anzahl von Längen
33:40
sind, also das Echo, wir ziehen wieder zwei ab für die ersten beiden Schrott Sachen da oben. Aber eigentlich interessiert mich hier genau erst mal nur, wie oft steht da eine 1 drin. Leerzeichen davor, Leerzeichen dahinter muss es die Länge sein irgendwie bis auf komische Schrott, irgendwelche Sachen mit Echo da hinten dran. Und wenn wir uns die Liste angucken,
34:01
die erste Dateigröße, die es nur einmal gibt von den kleinsten, die kleinste Datei, die es nur einmal als Dateigröße gibt, 7.627 Beut bis die 9 Gigabyte, die gibt es auch nur einmal. Das finde ich beruhigend. Wenn ich Zellnummern einblende, sind es nur nur 57.000 verschiedene Dateigrößen,
34:21
die es genau einmal gibt von einer Million. Das hat mich sehr überrascht. Also ich habe wenig Zeug so bewusst doppelt liegen. Das heißt, das bedeutet zumindest, wenn ich jetzt hergehe und sage, das mache ich zum Optimieren, dann lohnt es sich vielleicht gar doch nicht so arg. Vielleicht lohnt es sich aber doch, weil z.B. die 9 Gigabyte
34:41
gibt es wirklich nur einmal. Und das sind so die hintersten großen 9 Gigabyte, 4, 4, das sind schon 20, 30 Gigabyte, die ich nicht lesen und eine Prüfsumme machen muss. Ich bin jetzt im Hotelzimmer noch nicht dazu gekommen, auszuprobieren, wie viel allein die Top 10, 20 in der Größe sind.
35:00
Aber das sind so Gedanken, die ich dann immer mache, wie mäßig teste ich irgendwas, bin ich auf dem richtigen Pfad. Die Zahl hat mich sehr überrascht. Ich hätte viel mehr Dateien erwartet, die es von der Größe her genau einmal gibt und dass ich viel mehr ausschließen kann an Zahlen von Dateien. 50.000 von einer Million, das sind 5 Prozent. Das fand ich überraschend wenig. Da werde ich mal noch rauskriegen,
35:21
warum das so ist und ob ich tatsächlich so viele Dupletten habe. Werden wir ja nachher vielleicht ein bisschen sehen, dass das daran liegt, dass alles mindestens zweimal kommt. Wir können gucken, wie viele Dateien gibt es genau zweimal? Das ist mindestens ein, aber dann hat es damit erst mal auch genug. Ich denke, genau zweimal gibt es nur 20.000.
35:45
Und wenn ich da ein Histogramm drüber haben möchte, in der ersten Spalte steht eigentlich immer drin. Mal gucken. Jetzt weiß ich nicht, ob da hinten Tappen gibt. Nein, kommt eigentlich kein Tappen. Wenn ich sagen würde, ich hätte gerne das erste Feld nur. Mal gucken.
36:01
Dann kommt da wahrscheinlich ganz viel. Weil es keine Tapps drin hat, deswegen muss ich sagen, wenn ich jetzt Delimiter-Lehrzeichen mache und dieses Leerzeichen haben möchte, dann ist das Problem, hier vorne hat es auch Leerzeichen. Das sind unterschiedlich viele. Und das CAD arbeitet wirklich auf Zeichenbasis. Wenn ich sage, ich möchte als Trennzeichen das Leerzeichen und das hier sind sechs Leerzeichen,
36:22
dann ist das da hinten schon die siebte Spalte. Das ist der Vorteil wieder von AWK. Aber was man dem CAD auch sagen kann, ich hätte gerne z.B. Minus C. Ich hätte gerne nur die ersten acht oder neun oder zehn Spalten. Wenn ich zehn mache, kann man mal kurz prüfen. Dann vermute ich, dass die erste Ziffern, zwei Ziffern von hinten noch vom Dateinamen zu was kommen.
36:40
Deswegen mache ich C bis acht. Dann passt das schon. Jetzt kommt nur noch die Anzahl, wie viel es irgendwas gab. Die kann ich dann mal wieder numerisch sortieren und dann kann ich wieder zusammenzählen, was es wie oft gibt. Wird immer sehr gerne gemacht. Wir machen immer mehr Daten. Mining nur mit Sort und Unic und irgendwas. Und diese Tabelle sagt mir jetzt
37:01
57 Dateigrößen gibt es genau einmal. Das war die erste Liste. 19.000 gibt es genau zweimal. Dateigrößen, die genau dreimal auftreten, sind 10.000. Also es wird zumindest weniger. Das ist das, was man ja so naiv erwarten wird. Je häufiger so was ist, desto seltener wird es. Und es ist kein so ein richtiger Ausreißer dabei.
37:20
Also das ist wieder so eine Art Statistik, die man irgendwie doch wieder erwartet hätte. Irgendwie. Und ganz hinten raus, es gibt, was ist das jetzt wieder? 57.000 Dateigrößen, die es einmal gibt.
37:42
Und es gibt einmal... Ah, ich hab einen Klo. Gibt's doch nicht.
38:03
Es gibt eine Dateigröße, ja, ist doch so. Es gibt eine Größe, steht nicht drin welche. Das muss man jetzt tatsächlich wieder hier vor dem Cut gucken. Eine Größe, die es 37.000 mal gibt. Ja, die haben wir vorher schon mal gesehen. Das ist nämlich die Größe 0. Die kommt tatsächlich 37.000 mal vor.
38:20
Weil es numerisch sortiert ist. Also ich hab immer noch 37.000 Dateien rumliegen, die 0 Byte groß sind. Und dann noch mal 20.000, die ich komprimiert habe und dadurch 20 Byte groß wurden. Ob sich das so richtig lohnt, mit einem Byte auszulassen oder nicht, da kann man jetzt drüber nachdenken. Jetzt, wo ich sehe, dass da so viele Gigabytes rumliegen,
38:41
kann man sagen, ja, lohnt vielleicht doch. Lass uns das mal ausprobieren. Weil die andere Methode wäre gewesen, okay, ich nehm einfach alle Dateien, mach mal eine Prüfung drüber. Also Teil 2 ist dann, ob's an den Größen liegt oder nicht, muss man drüber nachdenken. Wenn ich jetzt eine spezielle, also sonst könnte man tatsächlich hergehen. Mal wieder die Dateiliste angucken.
39:00
Jetzt kann man in zwei Richtungen weitermachen. Also entweder ich pick mir jetzt irgendeine Größe raus und sag, ich guck mir jetzt einfach nur die Dateien an mit 3669 Byte. Da hab ich jetzt alle Dateien trennen. Und wenn man das dann richtig suchen möchte, muss man mir jetzt sagen, fang mal am Zeilenanfang an und nehm die Zahl und dann muss ein Lehrzeichen danach kommen.
39:21
Ah, da kommt kein Lehrzeichen, sondern ein Tab. Das war die Liste mit den Tabs. Sie sind überrascht, ich bin es auch. Da ist was drin.
39:40
Und wenn ich CREP such, sag mal, bla bla bla, backslash T, findet er nichts. Wenn ich jetzt hier ein Tab, wieder ein Tipp so, was ihr nicht sehen könnt, Ctrl V, Ctrl I oder Tab, dann findet er Sachen mit zumindest drei M. Freuten von CREP und wenn ich jetzt da noch ein Dächlein davor mache, such am Zeilenanfang,
40:01
dann sind das nur die Dateien, die genau diese Größe haben. Aber das mit dem Backslash T funktioniert nicht. Und warum funktioniert das nicht? Weil CREP solche Backslash T, Backslash N erst mal nicht kann. Dafür gibt es entweder wieder eCREP auch nicht, CREP minus e. Das ist eine Perl-Extension. Dann liest man die Man-Page durch, wie diese Sachen da reinkommen oder tipps richtig.
40:21
Interessant. Hätte ich jetzt nicht gedacht. Okay. Das heißt, ich könnte jetzt zum Beispiel hergehen und wirklich mich durch so eine Größenliste durchmachen. Die haben wir ja sortiert. Ich suche jetzt nur die Dateien für 3669. Das sind ein... Okay. Sonst bei Zwischenfragen einfach laut sein.
40:42
Dann kriege ich das vielleicht mit. Die 41 Dateien. Sieht jetzt so aus. Das heißt, ich könnte jetzt hergehen, mir... Da ist ein Tab drin. Das heißt, ich kann mir jetzt die vorne, die Nummern wieder wegschnibbeln, sagen, ich hätte gerne die Spalte 2 bis Ende,
41:00
falls da Tabs in Dateinamen drin sind. Und dann, wo wir gestern auch schon waren, da gibt es das tolle Tool xAux. Nimm mal die Dateiliste und lass das mal auf irgendeinem Programm los. Zum Beispiel. Da finde ich immer ganz praktisch zum Debuggen, was passiert und klappt das. Sind die Dateinamen gut und richtig? Mein erstes Testprogramm für xAux ist einfach ls minus l. Und ganz gerne auch mit der Option minus d.
41:22
Und pack jetzt mal die ganze Dateiname auf die Kommando-Seite da hinten mit drauf. Das minus d. Deswegen, wenn da jetzt zufällig mal in der Namensliste ein Directory drin ist, dann würde man immer den Inhalt von dem Directory auflisten, was ich jetzt weder will noch brauchen kann. Deswegen ist es... Und dann vielleicht ganz viel Output kommt, der mich wieder nur verwirrt. Das heißt, wenn man mit xAux so eine Dateinnamensliste testen will
41:42
und vielleicht sogar bewusst Datein drin sind, jetzt müssten es ja eigentlich falsch sein, wenn ich nicht falsch gemacht habe, dann geht man einfach mal her, lässt es da rein. Das sieht schon gar nicht so schlecht aus. Wenn die Liste lang ist und es durchläuft, weiß man nicht. Ein guter Test ist jetzt, den Output einfach wegschmeißen oder durch Wordcount laufen lassen.
42:02
Weil dann sieht man plötzlich, ob irgendwas schiefgegangen ist. Weil sonst, wenn das so durchläuft, zählt da ja gar nicht, ob da irgendwo ein Fehler war. Ich sehe keinen Fehler, weil das schon über den Bildschirm rausgerutscht ist. Aber wenn man den eigentlichen Erfolgsoutput, ah, ich konnte ein Listing machen, dann merkt man, oh, bei ein paar Sachen ging das nicht richtig.
42:20
Das heißt, einmal bla bla bla home irgendwas. Das heißt, das XR geht jetzt nicht auf alle 41 Datei A. Weil WC auch sagt, wenn man genau hinguckt, ich habe 40 Zellen bekommen mit 360 Worten und so. Und es waren aber 41 Dateien. Irgendwas ist schiefgegangen und sagt, genau mit der Datei. Wenn man anguckt, was da kommt,
42:41
jetzt wissen wir ja ein Bruchstück von dem, was nicht so tut. Bla bla home oder dongle irgendwas oder so. Dann gucken wir, ah, ist egal. Und dann sieht man halt, da ist wieder mal ein Leerzeichen drin. Und da ist noch ein Leerzeichen drin. Und wenn ich halt, ja, so etwas kann man mal ausprobieren.
43:01
Wenn ich halt jetzt L ist, minus L. Dann sind es halt drei einzelne Worte. Und dann sagt man, den ersten Teil kenne ich nicht, den zweiten kenne ich nicht, den dritten kenne ich nicht. Und mit etwas mehr Pech hätte ja das hier jetzt ein Verzeichnis sein können. Das mit dem Leerzeichenaufhörer oder so was. Dann hätte hier jetzt statt NoSatchFilerDirector
43:20
den ganzen Inhalt von diesem Verzeichnis, wenn es eins gewesen wäre.
43:40
Die Frage war, wenn ich jetzt so die Suchbefehle mit find zum Datein suchen, ob das auch oder ob das nicht in ZIP-Dateien die Inhalte anzeigt. Also find ist ein ganz steinaltes, genauso wie LS minus L, Direktorelisting, steinaltes Unix-Kommando, das wirklich die Dateien im File-System anzeigt. Und wenn da jetzt noch nicht, also, Moment.
44:03
Also wenn es um einzelne Dateien in den ZIP-File geht, also wir können ja mal kurz eins anlegen. ZIP, Folien und hier, das sind die Folien von gestern, das schmeißen wir in den ZIP-File rein, ja. Da liegt jetzt dieses gerade neu gezauberte Folienpunkt ZIP. Wenn man jetzt vorstellt LS minus L oder so was, würde mir jetzt jedes Mal den Inhalt
44:21
von so einem Ding anzeigen. Wenn ich ein Direktorelisting mache, wäre das glaube ich nicht, dass man wirklich haben möchte. Also früher gab es noch kein ZIP-File. Und es würde das jetzt total unübersichtlich machen, weil ich will ja sehen, was hier drin liegt und nicht. Genauso, ja, ob das jetzt in dem ZIP-File Dateien sind oder diese Unterverzeichnis.
44:40
Da könnte man sich vielleicht noch wünschen, wenn man sagt, mach Unterverzeichnis, dass es so eine Rekursion auch in so einen ZIP-File reingibt. Macht nicht ZIP, er macht nicht das Kommando LS und nicht das Kommando Find. Und mir fällt auf die Schnelle auch nichts anderes ein, wo man ein Direktorelisting bekommt, wo ZIP-Dateien, die rumliegen,
45:01
auch automatisch mit aufgelistet werden, wie wenn sie Unterverzeichnisse werden. Ja, vielleicht mal eine lustige Idee. Wobei dann, wenn man drüber nachdenkt, schon wieder ist, ja, es gibt ZIP-Files und es gibt RAR-Files und LHA und 7-ZIP und alles. Und tar.gz und tar.blub. Und manchmal heißen die ja gar nicht so, wie das was dann ist. Ja, dann heißen die Punkt PITs,
45:21
weil nur als Punkt PITs gehen sie durch eine Firmenfeierwahl durch, weil ZIP-Files ja so böse sind. Oder sie heißen wirklich Text und sind trotzdem ZIP. Dann muss ich reingucken. Weil das artet ziemlich aus, wenn ich das automatisch mache. Wäre natürlich auch mal nett. Man muss das Shellscript bloß ein ganz kleines bisschen erweitern. Diese rekursive Suche.
45:40
Ich kann jetzt wirklich hergehen, einfach sagen. Also wenn es mir nur um die ZIPs ging. Ja, dann suche ich mir alle ZIPs. Und gehe da dann irgendwie. Weil, re, ZIP, du. Ich habe es gesehen. Ich komme gleich mit mich gleich an ZIP.
46:03
ZIP. Wenn ich das mache, dann kommt halt eine Flut von ZIP-Inhalten, wo ich nicht so richtig weiß, die ich auch kaum mehr bremsen kann. An dem Output wäre jetzt ziemlich blöd für mich. Erst mal, wenn ich so drüber nachdenke. Oh, hab ich halt, halt, halt, halt, halt.
46:20
Ich habe alles ausgepackt, ist egal. Kann ja mal passieren. 1 ZIP minus Misting, glaube ich, hätte ich machen wollen, ja. Jetzt sehe ich den aber auch nicht so richtig an, wie es geht. Dazu könnte man jetzt noch sagen, okay, ich nehme den Output von dem ZIP. Dafür haben wir ja Shell-Tools und so was. Und mache mal, zumindest damit ich weiß, wo es herkommt.
46:40
Am ZIP, SED, Stream-Editor. Ich kann da jetzt in dem Output von dem ZIP, was da kommt, am Zeilen anfangen. Einfach mal ZIP, Dollar ZIP, den Namen. Und dann sollte ich das in doppelte Gänsefüßchen machen. Wenn ich so was treibe, ich habe da falsch gemacht.
47:05
SED, Suche und das. Ich mache ein Anzip-Listing auf eine ZIP-Datei und suche den Zeilenanfang und ersetze es durch.
47:20
Nein, nein, ich will das im Stream haben. Das habe ich jetzt noch nicht so ganz verstanden. Was ich mir da kummerbereite. Dann tun wir mal den normalen Output, der gut ist, wegschmeißen. Aha. Wenn da böse Zeichen drin sind. Anzip, cannot find. Also erstens mal, wenn da böse Zeichen drin sind, hatte ich auch gestern schon immer noch mal,
47:40
man muss immer um alle Shell-Variabeln, da sind ja eventuell Spaces drin. Und das ging beim LS minus L ja gerade auch schon schief. Find, minus Name, ZIP, kippt nur in den Datei-Namen. Und dann lese ich die Datei-Namen und mal gucken, ob es so besser wird.
48:02
Wenn man in einer, also im Kommentar ist, wenn man SED minus Option I für In-Place-Editing, das macht man dann, wenn man in einer Datei was editieren möchte. Aber ich will jetzt gar nicht in Dateien editieren, sondern einfach in dem Output, den ich hier gerade so erzeuge. Ja, das Anzip liefert das Listing. Und ich würde jetzt in jedem Zeil von dem Listing ganz gerne am Zeilanfang noch den Dateinamen
48:22
vorne hinschreiben mit Doppelpunkt. Nein, es geht ja, also SED wird sehr oft gebraucht. Man hinten muss man da so ein G mit angemacht, das mehr wie einmal. Aber da das, was ich ersetzen möchte, der Dach nur am Zeilanfang macht, am Zeilanfang, genau, den Zeilanfang gibt es wirklich nur einmal. Deswegen brauche ich jetzt kein G. Da hakelts Fehlermeldungen, die ich jetzt...
48:44
Und da wollte ich nicht hin. Wenn man es gar nicht versteht, dann kann man ja mal anzipen. Dann schreibt man einfach mal ein Echo hin. Mach mal nicht das Kommando, sondern zeig mal, wie das Kommando aussehen würde. Da kommt jetzt der Output in Echo. Der Echo interessiert sich nicht,
49:01
was von Standard Input kommt. Und mal gucken, was er denn da sagt, was für ein SED-Kommando das ist. Ach. Und wenn er dann interessiert, was das Echo ausgegeben hätte, sollte man es nicht in WC reinpipen. Sonst sollte sich das wirklich mit Last zum Beispiel angucken. Suchen und...
49:22
Das ist das, was ausgeführt wird. Wem fällt was auf? Ja, das SED hat halt alle so seine Tücken und Krankheiten. Das SED, Suchen und Ersetzen funktioniert so. Nimmt das erste Zeichen nach dem Suchmal.
49:41
Da macht man klassisch immer so einen Slash hin. Such mal Harald oder setz mal durch Martin. Jetzt hab ich da gesagt, such mal den Zeil anfangen oder setz mal durch den Dateinamen. Dateinamen heißt aber auch Home, Harald, irgendwas mit ganz vielen Slashes. Und da kommt da ganz viele Slashes rein, die ja dann irgendwie durcheinander bringen. Ganz blöde Idee, da Slashes zu nehmen. Jetzt müssen wir ein Zeichen ausdenken, das da nicht drin vorkommt.
50:03
Also was oft, was nicht so wahnsinnig oft vorkommt, sind dann so Gartenzäune, ein Hasche-Zeichen könnte sein. Man muss ein bisschen raten. Man könnte jetzt einmal durchgreppen, kommt hier wirklich... Kommt da wirklich nur was, es wird nicht so oft passieren.
50:21
Irgend sowas zum Beispiel, das ist schon viel besser. Suchen oder setzten, nehmen wir mal, dass das gut geht. Es geht zumindest nur um die Idee. Echo wieder weg, Output wieder hin. Ja, ja, bla, bla, bla. Dateinamen, Doppelpunkt. Und dann hätte ich mal die Information, in der Datei sind die Unterdateien und so was. Jetzt kann man den Rest zwischen den Rauschnibbeln machen.
50:42
Also das Behandeln wie Unterverzeichnis von blubr.zip. Wenn ich den hier einfach dieses ganze Zeug durch ein Slash ersetze, dann sieht es so aus, das ist mein Verzeichnis, in Anführungszeichen, da sind die Sachen drin. Und dann könnte ich das eh nicht behandeln.
51:08
Und die Größeninformation, die mir so wichtig war, war ja auch schon da. Wollen wir jetzt aber weglassen. Aber könnte man sich vorstellen, oder mache ich das für Anzip und Ferrar und Hau und Schnick Schnack und irgendwie und Nächster Vortrag nächstes Jahr.
51:20
Du hattest noch eine Frage, oder? Ich hatte mal einen Vorschlag, wie man über diese Leerzeichenprobleme hinwegkommt. Da kommen wir jetzt gleich auch noch dazu, wenn man die Nase mal voll hat und weiß, was geht.
51:42
Also das mit Inhalten von Zip-Dateien lassen wir jetzt erst mal weg. Ist schon interessant genug, ob ich rausfinde, ob die gleiche Zip-Datei zehnmal irgendwo rumliegt. Wenn wir da schon hingekommen sind. Bis wann? Drei Viertel, glaube ich, gell? Nee, 16, 30, oh. Müssen wir uns eh sputen. Das hängt zurück.
52:01
Ich will keine Zip-Dateien haben. Zip, Zip, Zip, Zip. Da waren wir. Das war, da waren wir eigentlich
52:20
bei dem ersten Problem angekommen. Genau, was jetzt, da hat es Leerzeichen und andere böse Zeichen und sowas drin. Und es ging um die Datei, dass das gleiche, wenn ich jetzt sagen würde, in meinem Home-Direktory minus Size, hatte ich vorhin schon mal, 3, 9, 1, 6, 3, 6, 6, 9, doch, richtig getippt.
52:42
Character, kriege ich für die gleiche Liste mit dieser einen Datei mit den Leerzeichen. Das heißt, wenn ich da X-Args mache, geht das wieder gleich schief. Keine große Überraschung, aber wir machen es mal schön. Ls minus Ld. Machen ein Listing und guck mal, wie viele Zeilen da kommen und sowas. Da gibt es wieder einmal hoffentlich eine Datei mit Federmeldungen.
53:02
Und 40 richtige. Find bietet da eine Möglichkeit, nicht Print, sondern Print 0 zu sagen. Dann gibt er die Sachen nicht mehr mit Zeilenenden aus, wie man das so schön lesen kann, sondern macht statt dem Zeilenende hinten ein Nullbyte dran. Nullbyte ist total prima, weil das in einem normalen C-String eh nicht vorkommen kann. C-Strings implementiert, das hört mit einem Nullbyte auf und fertig.
53:22
Deswegen kann es auch unter Garantie nicht in einem Dateinamen vorkommen, weil bei dem Nullbyte der Dateiname aufhören würde. Das ist schon mal ganz gut. Dann muss man dem X-Args eben sagen, jetzt kommt die nicht mehr mit Zeile für Zeile und packt die mal hintereinander auf so eine Kommandozeile. Nicht minus N, sondern minus Null.
53:42
Macht das Nullterminiert. Wenn ich das mache, dann verschwindet die Fehlermeldung von diesen drei Dateinamensfragmenten in 41 Output-Zeilen. Dann hat man diesen ganzen Schrott mit Sonderzeichen und so etwas nicht. Dann packt er das schön Dateiname für Dateiname auf diesen Kommandozeilenaufruf von LS.
54:02
Alles andere ist kein Problem, weil das LS direkt aufgerufen wird mit den richtigen Dateinamen. Gänsefüßchen und all so ein Zeug spielen da keine Rolle, weil keine Schelle Null wird. Damit kann man jetzt schön entweder find oder ... Jetzt habe ich hier schon meine Liste gemacht mit Leerzeilen und sonst irgendwas.
54:22
Da kommen Zeilen raus, ich kann es jetzt gar nicht ändern. Aber ich kann jetzt hier sagen, ersetzt mir doch mal die Zeilenenden, dafür gibt es ein anderes tolles Schild, Tool nämlich TR, durch Nullbytes. TR, wenigstens einmal kurz zeigen, wird meistens so verwendet,
54:40
ersetzt mal die Zeichen Groß A bis Z durch Klein A. Man kann so Listen von Zeichen angeben und so etwas teste ich mal ganz gern. Irgendwie wird das auf Caps Lock gekommen, das ist egal für den Test.
55:03
Groß A bis Z wird durch Klein A ersetzt und so etwas. Ich kann das dann auch anders herumdrehen, das heißt, man kann einfach Listen angeben. Wenn da Leerzeilen drin sind, gänsefüßchen und so weiter, tut die erste Liste durch die zweite Zeichen, das heißt Klein A durch Groß A, Klein B durch Groß B und so etwas. Man kann auch sagen,
55:21
mit Minus D, jetzt muss das Caps Lock wirklich raus, lösch mir mal Delete alle Zeichen außer Klein A bis Z, da bleiben nur die Großbuchstaben übrig oder lösch mir die Großbuchstaben, lasst die Kleinen übrig und man kann auch irgendwie das Komplement von irgendwas,
55:42
also lösch mir nicht Groß A bis Z, sondern alles außer Groß A bis Z, er lösch alles außer Groß A bis Z, aber jetzt sehe ich gar nichts mehr. Er hat wirklich alles außer Groß A bis Z gelöscht, auch das Zeilenende.
56:02
Das heißt, er hat dann am Schluss irgendwo, er steht mit dem Cursor hinter dem N und dann kommt mal ein Prompt und geht an den Zeilenanfang und überschreibt das alles. Aber wenn man manchmal kein Output kriegt, dann liegt das entweder daran, dass es kein Output gab oder dass man sich den Output doch lieber immer in Less angucken sollte und dann sieht man im Less, da kommt ja was,
56:21
das Less verrät einem ja nicht, oder man macht einen Wordcount und auch Wordcount sagt mir, ich habe da 10 Zeichen bekommen, ich habe ein Wort, Nullzeilen, es war kein Zeilenende dabei. Wenn plötzlich gar nichts auf dem Bildschirm auftaucht, kann das an solchen Sachen liegen, wenn es nur fast eine Zeile war. Aber das macht TR
56:40
und deswegen, nein, fein, da wollten wir jetzt das Krepp wieder haben. Also TR das Zeilenende durch Backslash Null ersetzen und dann können wir Xargs minus Null, jetzt ist es eine
57:03
nullterminierte Dateilnamensliste ls-ld und jetzt kommen da keine Fehler mehr noch raus. Das heißt, damit kann ich mir irgendwelche Sachen da rauskrabbeln und sagen und jetzt machen wir jetzt statt ls-l, nachdem ich es endlich geschafft habe, mache ich eine Prüfsumme drauf und jetzt kriege ich so eine Prüfsummenliste
57:20
von ganz vielen Sachen und jetzt kann man die wieder sortieren. Jetzt habe ich von den Dateien, die alle gleich lang sind, halt sort gleiche Name und ja, hier sieht man schon so mit bloßem Auge. Aber bloßes Auge ist jetzt wieder total kompliziert.
57:40
Deswegen kann man jetzt entweder wieder erst hergehen und sagen, ich schnippel bei mir dann die ersten 8 Zeichen raus. Cut mit T Dann habe ich nur die Prüfsummen. Dann sortiere ich die wieder mal. Ah, die waren schon sortiert. Man kann gar nicht oft genug sortieren. Dann mache ich wieder Unique mit den Anzahlen. Und jetzt interessiert mich entweder die mit der 1 nicht
58:01
oder ich sortiere sie einfach nochmal. Dann sehen oben, was es nur einmal gibt, ist oben und unten merke ich 2, 3, 4. Ah, es gibt mehrere Dupletten, die es zweimal gibt und einmal sogar fünfmal. Mich interessiert welche. Dann kann man jetzt wieder von Hand probieren, bevor man das wegschnippelt.
58:21
Ah, hier CREP. Dann mache ich mal eine solche Prüfsumme und suche die mal und das sind die beiden Dateien. Temp 132 und Temp 164 haben die gleiche Prüfsumme und die gleiche Dateigröße. Das heißt, damit habe ich jetzt, wenn ich es richtiger haben wollte,
58:40
Cut, das war gut. Ich schnippelte die Namen. Um das mit dem Unique zu machen, habe ich jetzt hier wieder nur die Prüfsumme weggeschnippelt, weil das sonst mühsam ist. Wenn man die Manpage von Cut weiterliest, kann man auch sagen, Minus C bis 8 und es gibt eine Option,
59:02
die schon wieder nicht mehr weiß, wie sie heißt, aber dass sie da ist, dass er Quatsch, nicht Cut, Unique, sorry. Dem Unique kann man sagen, vergleich mal die Dateien, aber vergleich einfach nur die ersten 8 Zeichen. Das heißt, wenn ich sage,
59:20
mache ich mal hier, Sort Unique minus C, zähle mal, wie oft das ist. Mit dem Dateinamen sind die alle eindeutig, da kommt lauter 1 heraus, das ist langweilig, aber wenn ich sage, Minus W8, vergleich immer nur die ersten 8 Zeichen. Dann sehe ich hier schon wieder drin, es gab 5 mal den hier
59:43
und ich habe zumindest einen Dateinamen übrig. Blöderweise hat er immer noch aus den 5 Zeilen eine gemacht, er lässt die erste übrig, deswegen ist das so bedingt, aber ich sehe mal zumindest einen von den Dateinamen, die gleich sind. Wenn ich alle 5 haben möchte, geht das mit Unique leider auch nicht.
01:00:00
geht, kann man also entweder UNIQ-W8 oder das vorher wegschnippeln, das hilft nicht richtig viel. Waren das vorher fast besser? Also vielleicht doch wegschnippeln. Also wenn man es von Hand sehen möchte, also eine von den fünf ist die hier, kann das ja ganz praktisch sein. Ansonsten die UNIQ-ID, also nur die Prüfung abschnippeln, sortieren, gucken wie viele sind das, das sah
01:00:24
dann so aus. Davon schmeiße ich jetzt alle wieder mal ganz schnell weg, die nur einmal da sind, weil die Prüf-Summe gibt es einmal, ist langweilig. Jetzt habe ich eine Liste von Prüf-Summen, die es mehrmals gibt. Und jetzt muss ich tatsächlich einmal durch, jetzt brauche
01:00:42
ich die gleiche Prüf-Summen-Liste nochmal, ohne dass ich die vorher weggeschnippelt habe. Ja, bis hier hin habe ich alle Informationen. Hab die Prüf-Summen, hab die jetzt alle Daten mit Prüf-Summen drin. Und jetzt kann ich hier, da kriege ich eine Liste
01:01:03
von Anzahlen, interessiere mich jetzt nicht mehr. Jetzt kann ich so entweder weil, read, Anzahl und CRC. Jetzt lese ich immer Zeile für Zeile, die erste Spalte in Anzahl, die zweite in CRC, du und jetzt greppe ich einfach mal die CRC
01:01:23
in meiner Zwischendatei, mache noch eine Leerzeile dazwischen und kriege jetzt eine Leerzeile, die es mehr wie einmal mit gleicher Prüf-Summe gibt. Prüf-Summe und Dateinahme. Das sind jetzt die drei Dupletten, die es zweimal gibt. Und dann die
01:01:41
Variante, die es insgesamt fünfmal gibt. Die sehen alle total wichtig aus von Dateinahmen, die könnte man wahrscheinlich komplett zusammen wegschmeißen. Da könnte man jetzt auch statt wieder ein LS-L drauf machen. Wie alt sind die noch? Aber damit konnte ich jetzt identifizieren, die beiden machen irgendwas. Die Liste sollte man sich erst mal in Ruhe angucken. Problem ist,
01:02:08
das habe ich jetzt für genau eine Größe gemacht. Das Spiel tatsächlich machen, ich habe vorhin mal so eine Liste generiert von den ganzen Größen. Ja, das war ja in F stehen alle die Größen drin. Cut. Feld eins. Sort
01:02:28
minus u. Macht es minus n. Das sind alle Größen. Irgendwie sortiert. Angucken. Null ist jetzt wirklich obwohl. Jetzt lassen wir die erste
01:02:47
Zeile mit der Null mal weg. Die finde ich jetzt irgendwie blöd. Eins. Lösche mir die Zeile eins. Dann bin ich die auch los. Dann geht es mit Größe eins los statt mit Größe null. So. Da kommt jetzt eine Liste raus mit Größen. Und jetzt kann ich die ja hier mal rein. While. Read. Größe. Du.
01:03:11
Und den Rest habe ich ja schon geschafft vorher. Jetzt statt diese 3669 mache ich dollar die Größe, die ich gerade gelesen habe. Dann mache
01:03:22
ich die Größe aus. Jetzt suche ich für die Größe alle Dateien, mache den ganzen Giraffel, den ich gerade gemacht habe und sage okay, die zweite dann für die Schleife über alle Größen, die ich mir da so mühsam rausgesucht habe. Ich kriege keine Fehler, wenn er fängt an zu denken und er findet ganz wenig das blöd. Das ist fies. Jetzt fängt es die
01:03:46
Bagger. Also könnte man so machen. Jetzt habe ich irgendwo einen kleinen Tippfehler. Wenn ich ihn nicht ganz schnell finde, machen wir lieber die Kurve zu den Ohren. Ich dachte schon, niemand passt auf die Zeit aus. Doch, sie passen. Aber sie sind so weit im Hintergrund. Ich kann das gar nicht lesen von ihr mit meiner Lesebrille. Kriegen wir hin.
01:04:06
Was läuft hier falsch? Wenn man jetzt so ungefähr wissen möchte, was da falsch läuft. Es geht zum Glück relativ langsam. Da kann man jetzt mal auch wichtiges Shell Kommando Z minus X. Ich setze das Flag minus X. Das ist das gleiche, wie wenn ich dann ein fertiges Shellscript mit Bash minus X aufrufe. Was dann passiert, wenn ich das
01:04:26
Kommando PWD ausführe, dann sagt mir die Shell auf Standard Error. Da wird jetzt das Kommando PWD so ausgeführt. Wenn ich jetzt diese ganze Monster-Kommando-Zelle ausführe, dann sehe ich wirklich ganz viele. Ich halte das mal mit Ctrl S kurz an. Jetzt wird Sort ausgeführt, SED. Das ist eigentlich das erste in diesem ersten Teil
01:04:43
der Pipe. Er macht erst die erste Spalte schnippeln. Ich lese die erste Spalte, ich sortiere mir die, ich schmeiße eine Zeile weg. Das ist das Read hier drin. Der müsste jetzt auch noch Sachen liefern, anhalten. Dann kommt dieses Echo. Jetzt geht es mir um die
01:05:02
Dateien bis 11. Mit den Dateien bis 11 hätte ich erwartet, Dach 11. Das kann sein, dass hier kein Tab mehr ist. Da hatte ich aber so reingebastelt, dass hier ein Tab-Zeichen drin ist. Sieht man jetzt auf dem Bild, ihr seht es genauso wenig wie ich,
01:05:21
das merkt man auch, wenn man jetzt hier vorne anfängt zu tippen und das ein Tab wäre, dann müsste er immer in Achtersprüngen weitergehen. Wenn man jetzt hier merkt, das ist immer genau ein Zeichen, deswegen kann das hier kein Tab-Zeichen mehr sein. Dann machen wir das raus, Ctrl V I. Jetzt können wir wieder zurückgehen. Das ist jetzt krümelig, aber jetzt merkt man, irgendwie, das ist ein Tab. Und dann geht es hoffentlich
01:05:42
gleich auch viel besser. Jetzt stört mich dieses Geplumper. Z plus X ist das Gegenteil von Z minus X. Da kommen verschiedene lange Listen, wo keine Dateien drin sind.
01:06:00
Das war vorher besser. Wir sind schon sehr nah dran. Die Historie gibt es nachher wieder zu den nicht vorhandenen Folien. Weil das, was ich getippt habe, lege ich als Historie dann einfach bei den Vortragsinfos ab. Kann man nochmal nachgucken, ob man das voll fertig
01:06:21
kriegt? Einen will ich noch angucken, sonst kommen zwei letzte andere Kommentare. Mit sieben. Was macht das schön? Ich habe immer in der Datei, wenn man einmal schummelt. Ich habe so eine Zwischendatei C mit den Prüf-Summen gemacht, weil die brauche ich ja
01:06:42
nochmal, um nachher meine Dateien mit den Prüf-Summen wieder zu suchen. Aber hier liegt jetzt immer noch die Prüf-Summe-Datei rum für diese Datei mit 3.669 bytes. Die ändert sich nicht. Das sind natürlich nicht die Prüf-Summen von anderen Dateien. Da kommen jetzt gerade nichts mehr. Das können wir natürlich aber leicht ändern. Das ist das Kommando, was die
01:07:00
Prüf-Summen-Datei geschrieben hat. Und das nehmen wir jetzt einfach hier und bauen das wieder mit rein. Dann müssen wir hier einmal einfügen, was wir gerade gemacht haben. Schreibt mal diese Zwischendatei C und eben jetzt wieder statt diese 3.000. Da ist das
01:07:21
Tab noch da. Da haben wir Glück gehabt. Also dollar, die Größe. Suchen wir die Größe, schreibt sie in die Zwischendatei C. Dann suchen wir die Sachen nochmal und frickeln die dann am Schluss hier wieder aus der Datei C raus. Und jetzt wird es gut. Wenn das gut aussieht, dann macht man schnell Z plus X. Guckt sich den ArtPod MLS an.
01:07:48
Dateien mit Größe 1. Die unterschiedliche Prüf-Summen haben. Wenn man genau darüber nachdenkt, kann es genau 256 von diesen Möglichkeiten geben, weil in diesem einen
01:08:01
Byte nur Zahlen zwischen 0 und 255 stehen können. Wer jetzt wieder interessant ist, es gibt die drei Dateien, die das gleiche Byte enthalten und die enthalten ein anderes Byte wie diese. Das Bein scheint sehr populär zu sein. Mal kurz reingucken. Welches Byte, ich halte das mal mit
01:08:22
Ctrl-Z an. Man weiß ja nie, ob das binär ist. Da steht ASCII Codex 31, eine echte Dezimal 1 drin. Das gibt eine einzelne 1, gibt diese Prüf-Summe und kommt ziemlich häufig vor. Und jetzt kann man mal suchen nach ganz vielen
01:08:41
Gleichheitszeichen. Das sind die, die drei Byte enthalten, vier Byte. Das rabbelt sich jetzt so langsam durch und sucht sich jetzt immer genau durch die Datei und macht Prüf-Summen. Das könnte ich jetzt den spannenderen Teil, drehen wir um, die kleinen Dateien, das ist sicher kein Schweinführer,
01:09:00
das hat die Liste, nimmt die Größen, sortiert die mal numerisch irgendwie und rückwärts. Ich will jetzt nicht die kleinen Frickelkram-Dateien haben, sondern ich will jetzt die größte Datei mit die größte Länge zuerst haben und fange mit der größten Duplette an. Ah, es gibt eine, boah, es gibt eine Duplette mit 4,6 Gigabyte. Da liegt irgendwas,
01:09:23
nein, es gibt zwei Dateien mit der größten Länge. Die Historie gibt es. Letztes Wort dazu, also man muss sich dann ernsthaft überlegen, ob man das mit Größen macht, wenn man tatsächlich merkt, man muss so Testdaten, ob es genug, also hier gab es gar keine,
01:09:41
finde ich jetzt komisch, werde ich nochmal nachgucken, ob das Sinn macht, tatsächlich jetzt für jede Größe einzeln sich die Prüf-Summen machen zu lassen. Die andere, viel trivialere Methode ist, ich mache wirklich so ein Feind über einfach alle Dateien, mache eine monsterlange Prüf-Summen-Datei, das ist total trivial, Feind, Type F, jetzt ist es auch wieder, ich mache
01:10:01
einfach eine Dateiliste, Print 0, damit ich mit diesen ganz Schrott-Dateien nichts habe, Print, dann sage ich dem X-Args wieder, da kommen Null-Bytes und mache über alle Dateien einfach mal eine CAC 32, Prüf-Summe geht immer noch ein Faktor 2 schneller und schreibe das in eine Datei. Dann habe ich von allen Dateien die Prüf-Summen. Das braucht jetzt
01:10:23
6 CPU-Minuten, und wenn man die dann hat, also das macht er jetzt so rein nach durch, da ist relativ schnell irgendwas drin, ist schon mal ziemlich viel drin und dann kann ich jetzt natürlich hergehen wirklich, Cut, dann habe ich alle Prüf-Summen von allen
01:10:40
Dateien, dann brauche ich bloß noch durch die Datei durchgehen und die mal sortieren, genau das, was wir vorher hatten, Cut, Ne, Unic, Minus C, zähl mir mal, und nur die ersten 8 Zeichen zum Beispiel, von dieser CC-Datei und sortieren wir das ganze numerisch rückwärts und dann kriegt man schon mal Zwischenergebnis,
01:11:00
also mit der Prüf-Summe gibt es bis jetzt 41 gleiche Dateien und das ist eine von den Kopien, wenn das ganz fertig ist, hat man alle Dateien, dann braucht man bloß noch nach der Prüf-Summe sortieren und gucken, welche sind alle gleich und kann sich dann Gedanken darüber machen, ist viel, viel einfacher und dann muss man sich, und
01:11:23
1 Million Dateien tatsächlich noch eine Kollision bei den 4 Milliarden möglichen Prüf-Summen ist, interessiert mich auch. Fragen draußen, nächstes Jahr, sonst irgendwo, ich hoffe, es hat Spaß gemacht. Viel Spaß beim Daten suchen und Platte aufräumen. Ach so, das allerletzte Wort, was mir dann gestern auch schon jemand gesagt hat,
01:11:41
einen habe ich noch, aber ist nicht von mir. Man muss das nicht irgendwie in der Shell mühsam selber programmieren, inzwischen gibt es auch ein Programm, das heißt F-Dubs, das genau das gleiche macht. Das ist total schnell fertig, auf mein Home-Direktor, ich war total baff und dass das so wenig ist, bis man merkt, aber man muss dem noch Minus-R-Rekursiv durch den ganzen Baum durchgehen, dann läuft es auch 6,5
01:12:02
Minuten, genau so lange wie meine Prüf-Summe und macht aber einen schönen Output, sortiert das alles und zeigt die Listen und was zusammengehört und sowas, auch toll. Kann man auch in C programmieren, aber wenn man nicht weiß, dass es das gibt, oder früher gab es das vielleicht auch nicht, macht man sich halt ein kleines Schätzchen. So, ganz schön. Vielen Dank. Vielen Dank.
Recommendations
Series of 7 media
Series of 5 media