shakky4711 hat geschrieben:
ich sitze gerade an einem Script dass mir ein Verzeichnis durchsucht und von allen gefundenen Dateien md5 Prüfsummen in einzelnen Dateien erzeugt.
Das funktioniert soweit ganz gut
Das `*.*' koennte Absicht sein um nur Dateien zu finden die einen Punkt enthalten, es koennte aber auch eine DOS-Gewohnheit sein. Dort braucht man `*.*' um alle Dateien zu erfassen. Bei Unix macht `*' das gleiche. Insbesondere erfasst es auch alle Dateien ohne Punkt im Dateinamen. (Versteckte Dateien werden in keinem der Faelle angezeigt. Fuer die ist ein explizites `.*' noetig.)
Das aber alles nur nebenbei.
Beim Verfeinern wird das Ziel verfolgt nur bestimmte Dateitypen zu erfassen um lediglich von den Audiodateien Prüfsummen zu erzeugen
Das findet logischerweise allerdings nur flac Dateien, es sind aber mitunter noch weitere Mediaformate vorhanden. Die eine Lösung wäre jetzt mehrere Schleifen nacheinander durchlaufen zu lassen die dann nach "mp3" "ogg" sucht, aber bestimmt gibt es da eine elegantere Lösung, ich habe es nur noch nicht hinbekommen
Die for-Schleife der Shell startet einen Durchgang fuer alle Worte zwischen dem Schluesselwort `in' und dem Strichpunkt. So kann man beispielsweise drei Durchgaeng so machen:
Oder alternativ so:
Was zwischen `in' und dem Strichpunkt steht ist egal. Ob dazwischen Dateinamen expandiert werden (globbing mit * und ?) oder Kommandosubstitutionen stattfinden (mit $(...) oder `...`) oder auch dazwischen literale Worte gemischt sind ist egal. Du kannst also problemlos sowas machen:
Daraus folgt die Loesung auf deine Frage:
(Wobei Liffis Loesung ebenso richtig ist. Sie findet die gleichen Dateien, nur evtl. in anderer Reihenfolge.)