2016-05-21 10 views
0

私はそこにyoutubeリンクを含むファイル名を持つ.mp3ファイルでいっぱいのディレクトリを持っています。- と.mp3の間でファイル名テキストを取得し、テキストファイルにパイプ

YouTubeの時計のURL部分はすべて、 - と - で始まり、.mp3で終わります。

ただし、問題があります。

いくつかのYouTubeのリンクには - が含まれていますが、タイトルの中にはそのものもあります。

私はタイトルからビデオのこの部分のみを抽出する必要がありません:

https://www.youtube.com/watch?v=(dQw4w9WgXcQ)

ユーチューブ-DLでダウンロードしたビデオのタイトルは次のとおりです。

リック・アストリー - 決して - ネヴァー・ゴナ

リック・アストリー:ゴナは、アップdQw4w9WgXcQ.mp3

ビデオのタイトルはあなたを与えますアップあなたを与えることは

私は何を達成しようとしていたことは、私はすでにダウンロードしたすべてのリンクを取得していないにユーチューブ-DLを伝えるテキストファイルにそれを置くことですそれらを再ダウンロード(ダウンロード・アーカイブ)

これをどうやってやりますか? (好ましくはbashのsedコマンドではなく、この時点で私は何を試して喜んで。)

+1

YoutubeのIDは常に同じ長さです。だから、ファイル名の最後の15文字を取り出し、最後から '.mp3 'を削除してください。あるいはそれと同等のものがあれば簡単です。 – rici

+0

オハイオ州はそれですか?それは意味をなさない – babadoctor

+0

ここでは、以前の特定の文字を.mp3からパイプを使ってテキストファイル – babadoctor

答えて

1

それはあなたが思うよりも簡単です:

-続い貪欲 .*は最後まで、すべての - Sを食べるようになります
# first get the titles an ids into a tab-separated multiline string 
both=`find * -name "*.mp3" | sed 's/\(.*\)-\(.*\)\.mp3/\1\t\2/'` 

# then cut it into two multiline strings 
titles=`echo "$both" | cut -f1` 
ids=`echo "$both" | cut -f2` 

# or process each title-id pair one-by-one 
echo "$both" | while IFS=$'\t' read title id; do 
    echo "$title" 
    echo "$id" 
done 
+0

に変換するスクリプトをプログラムするだけです。私はあなたが何を意味するのか分かりません。): – babadoctor

+1

OH !私はそれを得る...ありがとう! – babadoctor

関連する問題