Utilisation de regex dans le script BASH pour récupérer le nom de fichier / type récemment créé en sortie par la commande précédemment dans la séquence


1

J'ai récemment posé cette question sur l'utilisation de la gpaste getsortie comme STDINpour youtube-dl . Depuis lors, cette question a reçu une réponse, mais j'aimerais passer à l'étape suivante de l'automatisation d'une tâche à commandes multiples:

  1. lancer un téléchargement de vidéo dans le dossier en cours à l'aide de l'URL copiée à partir de la barre d'URL dans la commande firefox: youtube-dl $(gpaste get [video url])

  2. convertissez le fichier mkv ou mp4 ou m4a en une
    commande .wav :ffmpeg -i [filename of video from step one].<filetype of video from step one> [filename of video from step one].wav

  3. [... le processus continue ...]

Ma question est la suivante: je suis encore nouveau sur regex. Existe-t-il une séquence de regex que je peux utiliser pour extraire le nom de fichier du fichier créé par la youtube-dlcommande et l'utiliser comme entrée pour la ffmpegcommande suivante ?

Voici un exemple:

gpaste get 0

résultats https://somevideo.com/video

youtube-dl $(gpaste get 0)

Télécharge le fichier dans le dossier en cours avec le Ynom de fichier &&

ffmpeg -i <filename Y>

Renverra une copie du fichier initial, maintenant au .wavformat

Comment est-ce que je peux dire à bash d'obtenir ce nom de fichier Y avant qu'il n'existe, afin que je puisse tout mettre dans un script?

Aurais-je également besoin de filtrer en fonction d'une gamme de types de fichiers (tous les types de vidéo) ou devrais-je filtrer pour le fichier le plus récent du dossier en cours ou une combinaison des deux?

Réponses:


1

Je viens de vérifier la documentation de youtube-dl, il accepte ce paramètre:

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

Alors, peut-être que vous pouvez essayer quelque chose comme ceci:

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

Je me souviens avoir vu ce paramètre dans les pages de manuel, mais je ne savais pas comment l'utiliser. Votre solution a un sens total, définissez-la simplement comme une variable puis appelez-la dans la commande suivante de la séquence, n'est-ce pas?
Andrew

@ AndÚ, exactement.
David Dai
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.