• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[SOLVED] gawk [SuSE 9.2]: maximale Dateigröße für Input?

Thurisaz

Member
Moin Leuts,

habe mir vor einer Weile ein kleines gawk-Skript gebastelt, das anhand der md5sum aller Dateien in einem Verzeichnis nach Duplikaten sucht und diese anzeigt (oder durch leichte Modifikation auch automatisch löscht).

An sich funktioniert das Ding sehr gut, wie ich mich gerade heute wieder durch einen kleinen Test überzeugt habe.

Nur daß es in der Praxis offenbar inzwischen versagt. Obwohl definitiv mehrfach dieselben Dateien unter anderen Namen im Verzeichnis liegen, findet das gawk-Skript diese nicht mehr. Die einzige Ursache, die ich mir vorstellen kann, ist: Die Datei mit den Prüfsummen und Dateinamen ist zu groß geworden (über 1000 Zeilen inzwischen).

Bei meinen (zugegeben nicht allzu umfangreichen) Untersuchungen habe ich keinerlei Infos gefunden, wie groß eine Datei maximal sein darf, um von gawk verarbeitet zu werden. Kann jemand von euch mir da einen Tip geben?

Ach ja:

Version: GNU Awk 3.1.4

Batchdatei, von der gawk aufgerufen wird:

Code:
cd /home/$USER/Documents/data

rm delete.txt

md5sum * > ids.txt
cat ids.txt | gawk -f ../gawkscript > delete.txt
cat delete.txt

In "delete.txt" sollen halt zwecks letzter Prüfung die Dateinamen erstmal aufgelistet statt gleich gelöscht werden, gelle... und die gawk-Skriptdatei liegt korrekt im übergeordneten Verzeichnis. Sie hat den Inhalt:

Code:
BEGIN   { last=""; }
        {
                if ($1 == last)
                        {
                        print "rm " $2
                        }
                last=$1
        }

(SPÄTER)

Duh - natürlich, fünf Minuten nachdem ich dies hier gepostet habe, fällt mir auf, daß mir irgendwann irgendwie das "sort" verlustig gegangen ist!

Problem ist damit gelöst - das korrekte Shellscript lautet damit:

Code:
cd /home/$USER/Documents/data

rm delete.txt

md5sum * | sort > ids.txt
cat ids.txt | gawk -f ../gawkscript > delete.txt
cat delete.txt

(Es mag dem einen oder anderen helfen bei eigenen Projekten, Duplikate loszuwerden... :wink: )
 
Oben