Datum: 2004-10-12
Quelle: suse-linux
In einem Verzeichnisbaum sollen alle identischen Dateien (also Dateien mit gleicher Größe und gleichem Namen) ermittelt werden.
find /basis -type f -printf "%f %s %h\n" | sort | \ awk ' BEGIN { prev_sz = 0; prev_name = ""; p_name = ""; } { if ( prev_sz == $2 && prev_name == $1 ) { p_names = sprintf ("%s, %s", p_names, $3); found=1; } else { if (found == 1) printf "%s %d %s\n", prev_name, prev_sz, p_names; prev_sz = $2; found=0; prev_name = $1; p_names = $3; } } '
Der (GNU)-find liefert eine Dateiliste im Format "Dateiname Größe Pfad", diese Liste wird sortiert einem awk übergeben. Dieser gibt immer dann die Zeile aus, wenn Name und Größe identisch zum Vorgänger sind.