Ordnerinhalt abfragen per Shell auf debian

Hallo ich habe hier mal ne frage…,

Ich habe auf meinem Server etwas vor was ich aber noch ned geschafft hab umzu setzen,

also ich möchte auch meinem server Via Shell abfrage schauen ob in einem bestimmten Ordner MP3 Files vorhanden sind. Sofern diese vorhanden sind will ich Via Shell eine playliste erstellen lassen (dies ist kein Problem) dazu habe ich hier schon bei einer Frage den Code hier gefunden.

if [ls -1a|wc -l]; then echo 1; fi

diesen habe ich nun noch erweitert gehabt mit einem else

if [ls -1a|grep mp3|wc -l]; then echo 1; else echo leer; fi

so nun ist aber das Problem das er NUR nach MP3 Files suchen soll und wenn er Keine findet dies dann nicht weiter ausführt. also er soll dann auf ein anderes Verzeichniss ausweichen wo MP3 Files liegen.

kann mir da wer helfen?

Moin,

In der shell sind ebenfalls for Schleifen möglich, auch verschachtelt:

z.b.:

for VARIABLE in ‚find $ORDNER‘
do
if [ls -1a|grep mp3|wc -l]; then
echo 1
else
echo leer
fi
done

MFG

Hey, den code hier is doch das selbe was ich schon hatte…

mein problem ist nchwievor das wenn andere dateien vorhanden sind wie txt files oder jpg das diese ebenfals gezählt werden obwohl ich NUR nach mp3 files suchen möchte…

Ach so, sorry hatte die frage dann nicht richtig verstanden.

Das kannst du über grep direkt mit Filtern, grep Beherscht für sowas unter anderem Reguläre Ausdrücke:

if [ls -1a|grep mp3$ |wc -l]; then echo 1; else echo leer; fi

Das Dollar Zeichen am Ende von mp3 ist da enscheident.

Ach und nur noch so eins kleiner Verbesserungsvorschlag:

if [ls -1a|grep [mpMP]3$ |wc -l ]; then echo 1; else echo leer; fi

Macht das ganze dann auch unabhängig von klein und Grosschreibung.

okay das sieht schon etwas besser aus, *freu* und noch eine letzte frage… kann ich dieses script unter /home/ legen und das Verzeichniss /home/musik/ damit lesen?
wenn ja wie?

Du kannst das im Prinzip hinlegen wo du willst. Einfach an ls -1a den Pfad anhängen.

Möglich wäre ausserdem das ganze in ein ausführbares Script unter ~/bin zu packen (wenn es mit im Suchpfad liegt) und den zu durchsuchenden Ordner als Option mit anzugeben:

#/bin/bash
if [test -d „$1“]; then
if [ls -1a $1 |grep [mpMP]3$ |wc -l ]; then
echo 1
else
echo leer
fi
fi

Damit das vom Suchpfad aus auch aufgerufen werden kann muss das noch Ausführbar gemacht werden:

chmod 770 DATEINAME

okay das sieht schon etwas besser aus, *freu* und noch eine
letzte frage… kann ich dieses script unter /home/ legen und
das Verzeichniss /home/musik/ damit lesen?
wenn ja wie?

Also bei mir funktioniert z.B.

if [ls -1a|grep pdf|wc -l != „0“]; then echo 1; else echo leer; fi

Das findet aber alle Dateien, die pdf im Namen enthalten, also auch z.B. testmp3.txt. Ich würde eher sowas bevorzugen:

if [-z ls *.mp3 2\> /dev/null]; then echo leer; else echo 1; fi

Man kann auch find benutzen und dabei gleich Groß- und Kleinschreibung ingorieren z.B.

find -iname „*.mp3“

Die Ausgabe von find muss dann noch ähnlich wie oben ausgewertet werden.