Siduction Forum

Siduction Forum => Scripting & Kernelhacking => Topic started by: bluelupo on 2014/10/02, 19:27:28

Title: Playlisten mit find suchen
Post by: bluelupo on 2014/10/02, 19:27:28
Hallo Community,
ich habe da ein etwas kniffliges (zumindest für mich) Problem mit dem find Kommando. Ich möchte einen Teil des Verzeichnisbaumes meiner Musiksammlung nach vorhanden Playlisten durchsuchen, d.h. ich möchte als Ergebnis alle Verzeichnisse haben in den keine Playliste existiert.

Ich habe schon mit find ein bisschen herum experimentiert, aber komm nicht auf die Lösung :-(

Das Verzeichnis ab dem ich rekursiv durchsuchen möchte heißt /mnt/share/music und die Playlisten beginnen immer playlist_*.m3u.
Title: Re: Playlisten mit find suchen
Post by: ayla on 2014/10/03, 00:00:59
Hallo,

ich hab mal im Netz ein Script gefunden mit dem man directories löschen konnte sofern sie einen bestimmten Dateityp nicht enthielten, leider weiß ich nicht mehr woher ich es hab.

Auf Dein Problem angepasst
Quote
ich möchte als Ergebnis alle Verzeichnisse haben in den keine Playliste existiert.
sollte es so funktionieren:

Code: [Select]
#! /bin/bash

tree_contains_m3u_files()
{
   
    find "$1" -type f -name "*.m3u" -print0 |
        read -r -d $'\0' file && return 0

    return 1
}

find . -depth -type d -print0 |
while read -r -d $'\0' dir; do
    if ! tree_contains_m3u_files "$dir"; then
        echo "$dir"
    fi
done


Das 'rm -rf' hab ich bereits durch ein 'echo' ersetzt... :)

Vom übergeordneten dir aus aufrufen.


hth
ayla