MaxPowers82 schrieb:
Ist denn in jedem Ordner nur eine Datei? Was machst Du, wenn dort mehrere Video-Dateien liegen?
In jedem Ordner sollte nur eine Videodatei liegen, außerdem manchmal Textdateien mit Infos wo wir das gefilmt haben.
Komplett sicher bin ich mir nicht, ob überall nur eine Videodatei liegt. Notfalls könnte man den Namen der ersten Videodatei oder den (meist identischen) Namen des Unterordners in dem die Dateien liegen nehmen.
Du musst das entscheiden. Dein Programm wird mit "könnte" nicht umgehen können. ☺
Nur $Name muss jeweils nach der *.mov oder *.avi Datei angepasst werden.
Was soll das genau bedeuten? Willst Du einfach die Erweiterung abschneiden? Willst Du ihn aus den Meta-Daten in der Datei lesen?
Ich will der nfo Datei den selben Namen wie der Videodatei geben.
Es ging ja hier um den Namen, der in die Datei geschrieben wird.
Mein Problem ist,dass ich nicht verstehe wie man eine Schleife bauen kann die jedes Unterverzeichnis nacheinander öffnet, dort Befehle ausführt und zum nächsten Unterverzeichnis geht.
PS: Die Unterverzeichnisse haben teilweise Leerzeichen im Namen
Das ist relativ einfach: Du kannst eine Subshell nutzen, dann brauchst Du den cd ..
nicht:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | for d in */; do
(
cd "$d"
for f in *.mov *.avi; do
if [ -f "$f" ]; then
cat >"${f%.*}.nfo" <<DATA
$f
DATA
exit
fi
done
)
done
|
WinXP to Edgy schrieb:
rklm schrieb:
Dann musst Du die Variable im Schleifenkopf genau so schreiben wie im Rumpf. $name und $Name sind zwei unterschiedliche Variablen für die Shell.
Abgesehen davon, dass das Skript nicht funktioniert, wenn bei der Zuweisung des Wertes an die Variable (Zeile 1) das $-Zeichen benutzt wird.
Jau! War mir gar nicht aufgefallen.
Darüber hinaus: wenn man das mit echo machen will, dann ist das doch ein Paradefall für
zu Beginn des Skripts, dann braucht man die Umleitungen in den einzelnen Zeilen nicht mehr.
Nee, es sollen ja mehrere nfo-Dateien erzeugt werden.
Ciao
robert