Script zum löschen von Filmen

  • Hallo,


    ich habe ein Script zum löschen von Filmen - allerdings schreibt er mir manchmal folgende Fehlermeldung ->


    Wed Aug 17 09:17:56 CEST 2016
    91
    rm: /media/hdd/movie/SkyRecorder/Serie: is a directory
    rm: /media/hdd/movie/SkyRecorder/Sport: is a directory
    rm: /media/hdd/movie/SkyRecorder/Serie: is a directory
    rm: /media/hdd/movie/SkyRecorder/Sport: is a directory
    91


    Was mache ich falsch? Das Ziel soll sein, täglich zu schauen, wie viel noch frei ist (per Cronjob) und alles was älter ist, zu löschen.


    PS. In den Ordnern Sport & Serie ist nichts drin. Liegt es daran?


    Hier ist das Script ->


    #!/bin/sh
    freespace=`df /media/hdd/movie | tail -1 | awk '{print $4}' | cut -d % -f1`
    echo `date`
    echo $freespace
    max=85
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Film -mtime +365 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Sonstige -mtime +365 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Dokumentation -mtime +365 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Serie -mtime +365 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Sport -mtime +365 -exec rm {} \;;


    freespace=`df /media/hdd/movie | tail -1 | awk '{print $4}' | cut -d % -f1`


    max=90
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Film -mtime +280 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Sonstige -mtime +280 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Dokumentation -mtime +280 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Serie -mtime +280 -exec rm {} \;;
    [ $freespace -gt $max ] && find /media/hdd/movie/SkyRecorder/Sport -mtime +280 -exec rm {} \;;


    freespace=`df /media/hdd/movie | tail -1 | awk '{print $4}' | cut -d % -f1`


    exit

  • Ja der Fehler kommt, weil die Ordner leer sind und du dich bei find nicht auf Dateien beschränkst.


    Ich denke das Script könnte man insgesamt etwas eleganter schreiben. Erstens kannst du die freespace Abfrage einmal als if-Abfrage um alles andere machen, zweitens geht glaube ich sogar das find mit mehreren Ordnern.


    Ich kenne mich mit Bash-Scripting aber auch nicht so aus. Da kommt sicher noch ein Experte und kann dir konkret sagen, was man da ändern muss. Oder du guckst mal in die man-pages :winking_face:


    P.S.: Setz das Script besser in [code] Blöcke, dann ist das besser lesbar :winking_face:

    so long
    m0rphU



    :aufsmaul: Kein Support per PN! :aufsmaul:

  • Zitat

    Original von TSMusik
    Beim find noch ein -type f dazu wäre für den Anfang nicht schlecht, damit rm nicht versucht die Ordner zu löschen, was es ohne Option nicht darf.


    Ich kenne mich da nicht so aus - was muß ich genau machen?

  • Bei dem Auftrag "find" kann man auch mehrere parameter nutzen.
    Welche kannst du sehen wenn du eingibst: find -h


    In diesem Fall solltest du Zeile mit "&& find /media/hdd/movie" drinn ändern in:


    "&& find -type f /media/hdd/movie"

    Boxen: im Betrieb die DMTwo, DMOne, DM920HD
    Image: u.a. DP Original (unstable)
    Skin...: Verschiedene