dateien mit gleichen namen finden

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von dosenfleisch, 20.01.2008.

  1. #1 dosenfleisch, 20.01.2008
    Zuletzt bearbeitet: 20.01.2008
    dosenfleisch

    dosenfleisch Foren As

    Dabei seit:
    29.03.2007
    Beiträge:
    75
    Zustimmungen:
    0
    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?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. mcas

    mcas Routinier

    Dabei seit:
    29.12.2005
    Beiträge:
    398
    Zustimmungen:
    0
    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.
     
  4. #3 dosenfleisch, 21.01.2008
    dosenfleisch

    dosenfleisch Foren As

    Dabei seit:
    29.03.2007
    Beiträge:
    75
    Zustimmungen:
    0
    @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?
     
  5. #4 Wolfgang, 21.01.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    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
     
  6. #5 dosenfleisch, 21.01.2008
    dosenfleisch

    dosenfleisch Foren As

    Dabei seit:
    29.03.2007
    Beiträge:
    75
    Zustimmungen:
    0
    danke Wolfgang!
     
  7. #6 Always-Godlike, 21.01.2008
    Always-Godlike

    Always-Godlike Das Freak

    Dabei seit:
    31.12.2006
    Beiträge:
    939
    Zustimmungen:
    0
    Ort:
    Saarland
    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
     
  8. #7 dosenfleisch, 22.01.2008
    Zuletzt bearbeitet: 22.01.2008
    dosenfleisch

    dosenfleisch Foren As

    Dabei seit:
    29.03.2007
    Beiträge:
    75
    Zustimmungen:
    0
    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
    
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. Yomm

    Yomm Foren As

    Dabei seit:
    12.08.2007
    Beiträge:
    79
    Zustimmungen:
    0
    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
     
  11. #9 Wolfgang, 22.01.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Es ging ja nicht um doppelte Namen, sondern doppelte Teil-Namen. ;)
    Doppelte Namen sind in einem Verzeichnis garnicht möglich.
     
Thema:

dateien mit gleichen namen finden

Die Seite wird geladen...

dateien mit gleichen namen finden - Ähnliche Themen

  1. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  2. Benötige Hilfe- Dateien vergleichen

    Benötige Hilfe- Dateien vergleichen: Hallo, für eine Arbeit an der Uni muss ich einige viele Bilder miteinander vergleichen, was ich gerne durch eine Automatisierung etwas...
  3. Mit VIM Dateien vergleichen und Unterschiede sichtbar machen

    Mit VIM Dateien vergleichen und Unterschiede sichtbar machen: Hallo, mit VIM ist es recht passabel möglich, zwei Dateien zu vergleichen und die Unterschiede hübsch aufbereitet anzeigen zu lassen: # vim -d...
  4. Bash - Zwei Binärdateien vergleichen (SQL Diff)

    Bash - Zwei Binärdateien vergleichen (SQL Diff): Moin, versuche zwei SQL Dumps miteinander zu vergleichen, dazu hole ich Stammdaten aus der MSSQL-DB und speichere sie direkt unter der Bash in...
  5. Dateien sortieren und dann vergleichen

    Dateien sortieren und dann vergleichen: Hallo, es gibt verschiedene Progrämmchen (möglichst via Kommandozeile und unter Windows) die Dateien vergleichen können. ZB. GNU Tools:...