Bash script, mehrere Daten umbennen und ffprobe.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Bash script, mehrere Daten umbennen und ffprobe.

Beitrag von Lord_Carlos » 10.06.2018 14:42:09

Tach

Ich habe ein Ordner mit mehreren .mp4 Daten.
Die will ich umbennen mit hilfe der Metadaten.

ffprobe 2> /dev/null -show_format bla.mp4 | grep "TAG:title=" | cut -d '=' -f 2
gibt mir das was ich will.

Ich habe aber Probleme beim durchiterrieren der Daten in meinem bash script.

Code: Alles auswählen

#!/usr/bin/env bash

set -o errexit
set -o pipefail
set -o nounset

main () {
        local files="/media/foo/bar/download/bla blub/*.mp4"
        for f in $files
        do
                echo "Renaming $f file..."
#               local title=ffprobe 2> /dev/null -show_format $f | grep "TAG:title=" | cut -d '=' -f 2
#               echo "new title: $title"
        done
        exit 0
}

function STDERR () {
        cat - 1>&2
}

main
Ergibt:
Renaming /media/foo/bar/download/bla file...
Renaming blub/*.mp4 file...

Am besten waere es als varargs.
Habe es mir main $@ und $* versucht.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

tobo
Beiträge: 2338
Registriert: 10.12.2008 10:51:41

Re: Bash script, mehrere Daten umbennen und ffprobe.

Beitrag von tobo » 10.06.2018 15:10:39

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
10.06.2018 14:42:09
Ich habe aber Probleme beim durchiterrieren der Daten in meinem bash script.
Du solltest das Quoting unterbrechen, damit der * die Dateinamen expandieren kann:

Code: Alles auswählen

local files="/media/foo/bar/download/bla blub/"*.mp4
        for f in $files
Besser aber direkt:

Code: Alles auswählen

for f in "/media/foo/bar/download/bla blub/"*.mp4; do
  ... "$f" ...
EDIT: Wobei, das obere würde ja noch immer nicht funktionieren. Soll in $files eine Dateiliste oder ein String stehen, der dann eine Dateiiliste erzeugt?
Meintest du vielleicht sowas:

Code: Alles auswählen

local files=$(echo "/media/foo/bar/download/bla blub/"*.mp4)
Das wird aber auch nicht funktionieren, auch nicht nochmal außenrum gequotet. Das ist alles nix...

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Bash script, mehrere Daten umbennen und ffprobe.

Beitrag von Lord_Carlos » 10.06.2018 16:47:43

Ich will einfach nur alle *.mp4 Daten in einem Ordner durch gehen.
Das hier gezeigt script ist nur wie ich es versucht habe.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

tobo
Beiträge: 2338
Registriert: 10.12.2008 10:51:41

Re: Bash script, mehrere Daten umbennen und ffprobe.

Beitrag von tobo » 10.06.2018 16:55:40

Code: Alles auswählen

for f in "/media/foo/bar/download/bla blub/"*.mp4; do
  ... "$f" ...
done

Antworten