ID3tag - ファイル名からメタデータを抽出するスクリプト

ID3tag - ファイル名からメタデータを抽出するスクリプト

次の録音ディレクトリがあります。

foo - bar-202009.opus
unix - tilde-2020se.opus
stack - exchange-29328f.opus

ファイル名でメタ設定を試みましたfoo - bar.202009.opus (いくつかの不一致があり、簡単な方法は破棄されました-<6digitchars>.opus)。

song title = foo - bar 

スクラップにはsedを使用してください。

$ ls | sed 's/-[a-zA-Z0-9]*\w//g; s/.opus//g'

foo - bar
unix - tilde
stack - exchange

私はそれを設定するためにid3tagを使用します、synatx

id3tag --song=[tilte] [file]

私はこれらすべてをディレクトリに持っているので、while&readで繰り返します。

ls | while read x; \
    do id3tag \
    $(echo \
    --song=\"$(echo $x | sed 's/-[a-zA-Z0-9]*\w//g; s/.opus//g')\"  \
    \"${x}\"
    ); \
    done

上記の問題は、入力ファイルの空白のためにid3が別のファイルとして解釈されることです(角括弧を使用しても\"${x}\")。

これで出力は次のようになります。

foo
'bar"'
'"bar-202009.opus"'
.
.

i3dtagに空白のあるファイルを単一のファイルとして処理させる方法はありますか?

ベストアンサー1

ls1行で解析を避けてください。

#!/bin/sh

for file in *; do
    scrap="$(echo $file | sed 's/-[a-zA-Z0-9]*\w//g; s/.opus//g')"
    id3tag --song="${scrap}" "${f}"
done

おすすめ記事