Verwenden von regulären Ausdrücken in BASH-Skripts, um den Dateinamen/Typ abzurufen, der kürzlich als Ausgabe durch einen Befehl früher in der Sequenz erstellt wurde

Verwenden von regulären Ausdrücken in BASH-Skripts, um den Dateinamen/Typ abzurufen, der kürzlich als Ausgabe durch einen Befehl früher in der Sequenz erstellt wurde

Ich habe vor kurzem gefragtDiese Frage zur Verwendung der gpaste getAusgabe als STDINfür youtube-dl. Diese Frage wurde inzwischen beantwortet, aber ich möchte nun zum nächsten Schritt der Automatisierung einer Multi-Command-Aufgabe übergehen:

  1. Starten Sie einen Download des Videos im aktuellen Ordner mithilfe der URL, die Sie aus der URL-Leiste im Firefox-Befehl kopiert haben:youtube-dl $(gpaste get [video url])

  2. Konvertieren Sie die MKV-, MP4- oder M4A-Datei in einen WAV-
    Befehl:ffmpeg -i [filename of video from step one].<filetype of video from step one> [filename of video from step one].wav

  3. [...Prozess geht weiter...]

Meine Frage ist: Ich bin noch neu bei Regex. Gibt es eine Regex-Sequenz, die ich verwenden kann, um den Dateinamen aus der vom youtube-dlBefehl erstellten Datei zu übernehmen und ihn als Eingabe für den folgenden ffmpegBefehl zu verwenden?

Hier ist ein Beispiel:

gpaste get 0

kehrt zurückhttps://somevideo.com/video

youtube-dl $(gpaste get 0)

YLädt die Datei mit dem Dateinamen && in den aktuellen Ordner herunter

ffmpeg -i <filename Y>

Gibt ein Duplikat der ursprünglichen Datei zurück, jetzt im .wavFormat

Wie kann ich Bash dazu bringen, den Dateinamen Y abzurufen, bevor er existiert, damit ich das alles in ein Skript einfügen kann?

Muss ich auch nach einer Reihe von Dateitypen (alle Videotypen) filtern oder nach der aktuellsten Datei im aktuellen Ordner oder einer Kombination aus beidem?

Antwort1

Habe gerade die Dokumentation von youtube-dl geprüft, es akzeptiert diesen Parameter:

--get-filename                   Simulate, quiet but print output filename

Vielleicht können Sie so etwas versuchen:

videourl=$(gpaste get [video url])
videofilename=$(youtube-dl --get-filename $videourl)
youtube-dl $videourl
#further processing. 

verwandte Informationen