dateien mit gleichen namen finden

dosenfleisch

dosenfleisch

Foren As
hallo,

ich hab ein verzeichnis, in dem sich eine menge dateien befinden.
ich möchte all jene dateien daraus kopieren, die mindestens zweimal denselben namen (bis zum ersten bindestrich) haben.

baum - ast.txt
eins - zwo.txt
vier - drei.txt
eins - zwo.txt
baum - borke.txt
drei - vier.txt
eins - drei.txt
drei - zwo.txt
schmid - meier.txt


in diesem beispiel wären es dreimal die "eins", zweimal die "drei" und zweimal "baum".
nur weiß ich nicht, wie die dateien heißen, sonst könnte ich mit find / -name *zahl* | wc -l danach suchen.

wie könnte ich das machen? das einzige, was mir momentan einfällt, ist vom anfang an der reihe nach den aktuellen dateinamen mit grep auf wiederholung zu prüfen.
geht das auch eleganter?
 
Zuletzt bearbeitet:
Eine Lösung habe ich leider auch nicht, aber vielleicht kommst du mit sort weiter. Dann hast du schon mal alle mit dem gleichen Anfang untereinander stehen.
 
@mcas
danke für deine idee.

ich habe das mal so gemacht:
Code:
find /tmp/ -name "*.txt" -type f >> ~/Desktop/txt-list.txt
find /docs/ -name "*.txt" -type f >> ~/Desktop/txt-list.txt

find /verz -name "*.txt" -type f |
while read file ; do 
dirname=$(basename "$file" | cut -d "-" -f1)  
count=$(grep "$dirname" < ~/Desktop/txt-list.txt |wc -l)
if [ $count -gt 3 ]; then
kdialog --title "$dirname - $count" --passivepopup "" 1 
fi
done

nun würde mich interessieren, wie ich ohne diese tmporäre text-datei auskomme.
var=$(find /tmp/ -name "*.txt" -type f )
ist klar, aber wie bekomme ich die zweite suche zusätzlich in $var?
 
Hallo

Wenn die alle in einem Verzeichnis ohne Unterverzeichnisse liegen, könnte folgender Schnellschuß (ungetestet) funktionieren.
Code:
ls -1|while read file;
 do
 if [ $(ls -1 "${file%% ?*}"*|wc -l) -gt 1 ];
then 
# Hier deine Action einfuegen
echo "$file mehr als einmal gefunden";
fi;
done

Geht aber mit perl (wegen hash) besser.
Hast du Unterverzeichnisse, musst du halt (eg mit dirname und basename usw.) durchhangeln.

Gruß Wolfgang
 
Darf ich raten wofür der Script ist? ^^

Meine Vermutung: Du hast mittels Streamripper ganz viele Lieder in einen Ordner gerippt und willst jetzt die Lieder nach Bandnamen in Ordner kategorisieren, sobald du mehr als 2 Lieder einer Band hast. Hab ich recht? Weil ich brauch zufällig auch so nen Script. Jetzt kann ich ja auf deinem aufbauen xD
 
nein, du darfst nicht raten und es verhält sich völlig anders ;)

in der datei mist befinden sich namen von bands die ich nicht ausstehen kann, aber durch diesen filter hüpfen.

Code:
liste=$(find /audio/mucke/ -name "*.mp3" -type f)

find /audio/mucke/cache/last.fm -maxdepth 1 -name "*.mp3" -type f -size +1000k|
while read song ; do 
dirname=$(basename "$song" | cut -d "-" -f1)  
count=$(echo "$liste" | grep "$dirname" |wc -l)
   if [ $count -gt 10 ]; then
   mkdir "/audio/mucke/mucke/$dirname"; 
    if ! grep -x "`basename "$dirname"`" < /audio/mucke/mist;then 
    mv "$song" "/audio/mucke/mucke/$dirname"
    fi
   fi
done
 
Zuletzt bearbeitet:
Hallo dosenfleisch
Keine Ahnung warum man das braucht. Wer seinen Cumputer richtig behandelt, hat kein Namen doppelt. Wenn dem nun so ist, und Du weißt den Namen, so suche mit dem Befehl find. Gehe dazu in /. . Dann durchsucht Dein Rechner durch alle Verzeichnisse. Ist der Name unbekannt, dann versuche es mal mit einem Shell-Programm. Das wird lange Zeit brauchen. Derweilen wirst Du Kaffee trinken können. Mit der Shell-Programmierung lädst Du alle Dateien eines Verzeichnisses in einer Datei. Diese Datei ist Vergleichsdatei für Deine Suche. Nun mußt Du alle Verzeichnisse durchgehen und sehen ob diese Datei dort auch existiert. Existiert sie, speicherst Du den Fundort in einer weiteren Datei. Mach es immer wieder und irgendwann hast Du alle Dateien die öffter vorkommen mit Fundort. Man kann das natürlich auch mit anderen Sprachen programmieren. Die Shell-Programmierung läuft aber mit einem Interpreter, da findet man Programmfehler besser. Schließlich wird man so ein Programm nicht jeden Tag gebrauchen.
Groß
Yomm
 
Es ging ja nicht um doppelte Namen, sondern doppelte Teil-Namen. ;)
Doppelte Namen sind in einem Verzeichnis garnicht möglich.
 

Ähnliche Themen

Dateien selektieren und zählen

Zurück
Oben