Siduction Forum
Siduction Forum => Scripting & Kernelhacking => Topic started 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.
-
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
ich möchte als Ergebnis alle Verzeichnisse haben in den keine Playliste existiert.
sollte es so funktionieren:
#! /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