Ich versuche, die Ausgabe von youtube-dl an zu leiten, xargs
da ich die heruntergeladene Datei mit dem Titel benennen möchte, der aus dem ersten Befehl extrahiert wurde. Ich habe jedoch Probleme damit. Der Befehl, den ich benutze, ist wie folgt;
youtube-dl --get-title "Youtube URI" | xargs youtube-dl -o {} "YouTube URI"
-0
würde einen Dateinamen mit dem endenden Zeilenumbruchzeichen erzeugen, was erlaubt, aber oft nervig ist. Wenn kein anderes Trennzeichen mit angegeben ist-d
, wirdxargs
standardmäßig\n
("newline") verwendet, was in diesem Fall angemessen ist.Antworten:
Um Ihre spezielle Frage zu beantworten
xargs
, müssen Sie angeben, dass Sie den{}
Platzhalter verwenden möchten :Siehe
man xargs
für weitere Informationen und welche Schalter sind auch impliziert-I
.Da es sich nur um ein einziges Argument handelt, ist die Verwendung der Substitution einfacher:
Beachten Sie, dass Sie mit diesen Konstruktionen eine Datei ohne entsprechende Dateierweiterung erhalten.
Der einfachste Weg, um Ihre eigentliche Aufgabe zu erfüllen, ist, wie bereits erwähnt, die Verwendung der integrierten Option zur Benennung von Titeln:
wie beschrieben in
man youtube-dl
. Dadurch wird auch die richtige Dateierweiterung für die Videodatei erstellt.quelle
xargs
nur alle eingehenden Argumente nach dem angegebenen Befehl angehängt.echo foo bar | xargs -d' ' echo baz
wirdbaz foo bar
in einer einzelnen Zeile gedruckt ; Die Argumente wurden an einen einzelnenecho
Aufruf angehängt . Der{}
Platzhalter ist ein spezielles Konstrukt und muss explizit mit aktiviert werden-I
, wie im Handbuch angegeben.Ich habe YouTube-dl-Manpages gelesen: Was du versuchst, ist viel einfacher als das, du brauchst nur das -t, - title-Flag.
oder
http://dev.man-online.org/man1/youtube-dl/
quelle
youtube-dl --title "YouTube URL" is because it has a different output to that of
youtube-dl --get-title "Youtube URL" vermeiden möchte .