Dateien löschen mit negierun

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von eclipse240hp, 24.07.2013.

  1. #1 eclipse240hp, 24.07.2013
    Zuletzt bearbeitet: 24.07.2013
    eclipse240hp

    eclipse240hp Grünschnabel

    Dabei seit:
    24.07.2013
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo, ich habe hier einen Ordner mit vielen Grafiken und möchte gerne bestimmte davon löschen.

    Die Grafiken heißen z.B. so

    bild1.jpg bild1_d.jpg bild1_280.jpg bild1_d.png

    und ich mochte nun alle bilder löschen, die wie "bil1.jpg" heißen, also nicht '*_d.jpg' oder nicht '*_280.jpg' heißen.

    Wie muss ich hier vorgehen um nur diese bilder zu löschen die in das Suchmuster passen?

    das ist mein bisheriges Script
    PHP:
    for i in *; do if $i ! -name *_d.jpg ! -name *_280.jpgthen rm -f $i ; echo $i;  done
    leider bekomme ich hier aber den Felfer -bash: syntax error near unexpected token `done'

    kann mir jemand helfen?
     
  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. #2 bytepool, 24.07.2013
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Du hast das "fi" vergessen. Allerdings vermute ich dass du dann weitere Fehler bekommen wirst, weil die if Syntax nicht stimmt, jedenfalls kann ich mir nicht vorstellen dass er das so schluckt.
     
  4. #3 eclipse240hp, 24.07.2013
    eclipse240hp

    eclipse240hp Grünschnabel

    Dabei seit:
    24.07.2013
    Beiträge:
    5
    Zustimmungen:
    0
    jo hast recht, das führt immer noch zu fehlern, dies mal andere unexpected fehler.
    Weißt du auf die schnelle wie der code richtig ist? Ich bin total der anfänger in shell und brauche nur diese zeile um ein paar 100.000 dateien zu löschen :)
     
  5. #4 bytepool, 24.07.2013
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hmm, wenn du eine halbwegs aktuelle Bash Version benutzt, sollte was in diese Richtung funktionieren:
    Code:
    for i in *.jpg; do
      if [[ ! $i =~ _280 && ! $i =~ _d ]]; then 
        echo rm $i
      fi
    done
    
     
  6. #5 eclipse240hp, 24.07.2013
    eclipse240hp

    eclipse240hp Grünschnabel

    Dabei seit:
    24.07.2013
    Beiträge:
    5
    Zustimmungen:
    0
    Ich habe das nun so abgeändert, aber leider werden alle dateien gelöscht
    PHP:
    for i in *; do 
       if [[ ! 
    $i =~ *_270.png && ! $i =~ *_d.png ]]; then  
       rm 
    -f $i;   
       echo 
    rm $i;   
    fidone

     
  7. #6 bytepool, 24.07.2013
    Zuletzt bearbeitet: 24.07.2013
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Logisch, weil du "*" eingefuegt hast. Der matching operator =~ liefert Wahr zurueck, wenn ein Muster in einem String zu finden ist. Wenn du "*" in deinem matching string hast, wird alles gematcht.

    Nebenbei lasse ich mir beim testen immer erstmal den Befehl den ich ausfuehren lassen will mit echo ausgeben, um sicher zu sein dass alles richtig ist bevor der Befehl tatsaechlich ausgefuehrt wird.

    Edit:
    Eh, na gut, meine erste Erklaerung war falsch. ;)
    Genau das Gegenteil ist der Fall, weil du keine Dateien hast die ein "*" im Namen haben, werden alle Dateien gematcht. Hatte mir den Code vorm schreiben nicht nochmal angeguckt. ;)
     
  8. #7 eclipse240hp, 24.07.2013
    eclipse240hp

    eclipse240hp Grünschnabel

    Dabei seit:
    24.07.2013
    Beiträge:
    5
    Zustimmungen:
    0
    achso ok. Ich habe hier aber leider nicht nur .jpg sondern auch .png .. daher setze ich * ein. ich dachte es wird nun im if geprüft ob es passt oder nicht. wie muss ich das denn machen, damit das mit * geht?

    Danke schonmal für deine hilfe! :)
     
  9. #8 bytepool, 24.07.2013
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Eh, ich bezog mich auf die if-Abfrage, nicht die Schleife. Selbstverstaendlich kannst du alle Dateien mit in die Schleife einbeziehen, aber du musst schon die richtige if-Abfrage schreiben.
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 eclipse240hp, 24.07.2013
    eclipse240hp

    eclipse240hp Grünschnabel

    Dabei seit:
    24.07.2013
    Beiträge:
    5
    Zustimmungen:
    0
    ich habe es hinbekommen
    PHP:
    for i in *; do 
       if [[  
    $i != *_270.png &&  $i != *_d.png ]]; then  
       rm 
    -f $i;   
       echo 
    rm $i;   
    fidone 
     
  12. #10 Gast123, 24.07.2013
    Gast123

    Gast123 Guest

    Die Bilder heißen also alle bild* und die die gelöscht werden sollen, haben keinen Underscore im Namen.
    Das schreit nach einer RegExp:
    Code:
    find ./ -regex '.*bild[^_]*\....' -exec rm {} \;
     
Thema:

Dateien löschen mit negierun

Die Seite wird geladen...

Dateien löschen mit negierun - Ähnliche Themen

  1. Dateien ab einer bestimmten Zeile löschen

    Dateien ab einer bestimmten Zeile löschen: Hallo, ich habe ein Skript geschrieben, welches mir mehrere Dateien in eine einzige Datei zusammenführt. Die einzelnen Dateien enthalten aber...
  2. Unterschiedlichen Text in mehrere Dateien finden und löschen / ersetzen

    Unterschiedlichen Text in mehrere Dateien finden und löschen / ersetzen: Moin erstmal, ich suche nach einer Möglichkeit, in mehreren unterschiedlichen Dateien Text mit folgendem Muster zu suchen und zu löschen oder...
  3. Wie Dateien ohne Rückfrage löschen ?

    Wie Dateien ohne Rückfrage löschen ?: Ich möchte in allen Unterordnern bestimmte Dateien mit "find" löschen, erhalte aber bei Treffern zunächst pro Datei eine Rückfrage, die ich...
  4. Dateien mit Ausnahme der aktuellste löschen

    Dateien mit Ausnahme der aktuellste löschen: Hallo liebe Community ich habe an eine Frage an euch. Ich versuche grad ein Shell zu basteln und erhoffe mir diesbezüglich Hilfe von euch. Ein...
  5. Nach Inhalt in Dateien suchen und den String aus Datei löschen

    Nach Inhalt in Dateien suchen und den String aus Datei löschen: Hallo alle miteinander, ich bin auf der Suche nach einer Möglichkeit nach Dateien mit einem bestimmten Inhalt zu suchen. Wenn der String in der...